を更新できるように、ブラウザのコンソールは言う:ルールが流星のMongoDB
更新に失敗しました:アクセスが以下のコードは、クライアントが
undefined
にvalue
配列の値を設定できるようにする必要があります
を否定したが、それは失敗します上記のエラーが発生します。
何故、どのように修正するのか?サーバはそれを取得する際のおかげ
//client
const doc = myCol.findOne({element: 'abc'});
myCol.update({_id: doc._id}, {$set: {value: undefined}});
//server
myCol.allow({
update: function(userId, doc, fields, modifier) {
console.log(modifier); // -----=> { '$set': {} } --------------why?
let edits = {$set: {value: undefined}};
const userVarified = (userId && doc.userId == userId);
const ABC = (doc.element === 'abc');
const XYZ = (doc.action === 'xyz' && doc.element === 'x' && doc.name === 'y' && _.difference(fields, ['values]).length === 0);
try {
if (userVarified) {
if (ABC) {
check(modifier, Match.OneOf(edits));
} else if (XYZ) {
return true;
}
}
} catch (e) {
return false;
}
return true;
}
});
編集1
は修飾子は{ '$set': {} }
です。どんな考え?
編集 "編集1" でエラーを修正ミッケルあたりの答えとして、2
。
このコードでは、修飾子{ '$set': { value: '' } }
が使用されるようになりました。
今やcheck(modifier, Match.OneOf(checkEdit));
という表現はfalseを返しますが、クライアントが送信するものとconsole.log(modifier)
が同じであるため、一致すると予想しました。
なぜそれが間違っているのでしょうか?
は、ファイルの先頭に追加され、代わりにMatch.test(modifier, checkEdit);
を使用し
import { Match } from 'meteor/check'
を修正しました。
あなたはほとんどそれを得ていますが、未設定の$を使用する必要があり、$を参照してください – Mikkel