cursor.observe({added})
挿入されたフィールドに基づいて新しいフィールドを計算するために使用しようとしています。Docs.update()
で観察する場合、追加されたドキュメントのブレークで使用するとadded
、Meteor は内破する前にループで停止するようです。ただし、更新は機能しchanged
ます。
なんで?そして、挿入時に新しいフィールドを計算するにはどうすればよいですか?
コメントを参照してください:
Meteor.startup(function () {
var cursor = Docs.find();
var handle = cursor.observe({
added: function (doc) {
// This breaks Meteor. Meteor gets stuck in a loop and breaks.
Docs.update(
doc._id,
{$set: {metric: getCalculatedMetric( doc.x, doc.y )}}
);
// However, this would log once as expected.
// console.log(doc.name + ' has been added.');
},
changed: function (doc, oldDoc) {
// This works as expected, updates myField.
Docs.update(
doc._id,
{$set: {metric: getCalculatedMetric( doc.x, doc.y )}}
);
}
});
});