MeteorとJavascriptを使用したプログラミング例に取り組んでいますが、奇妙な問題に直面しています。これは私のコードです:
Items.allow({
insert: function(userId, doc) {
return (userId && doc.owner === userId);
},
update: function(userId, docs, fields, modifier) {
console.log("------------");
console.log(docs);
return _.all(docs, function(doc) {
console.log(doc);
console.log(doc.name);
console.log(doc._id);
console.log(doc.owner);
console.log(userId);
return doc.owner === userId;
});
}
});
Javascriptコンソールを使用してItemsコレクションの1つのオブジェクトを更新しようとすると
Items.update({_id: "cY87rAW8g4f92bRY2"}, {$set: {price: "$20"}});
コンソールに次のように表示されます。
------------
{ name: 'two',
owner: 'ZGXiBDBR6J5XdTHSe',
_id: 'cY87rAW8g4f92bRY2' }
two
undefined
undefined
undefined
ZGXiBDBR6J5XdTHSe
コンソールの最初のログ「console.log(doc);」は、正しいアイテムを更新しているが、残りのコンソールログdoc.name、doc._id、およびdoc.ownerが未定義であることを示しています。これにより、doc.ownerとuserIdを比較できないため、更新が失敗します。