瀏覽器控制檯說:允許規則更新流星的MongoDB
更新失敗:拒絕訪問
下面的代碼應允許客戶value
陣列的值設置爲undefined
,但它失敗與上述錯誤。
任何想法爲什麼以及如何解決它?由於
//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
modifier是{ '$set': {} }
當服務器得到它。任何想法爲什麼?
編輯2
根據Mikkel答案,它修復了「編輯1」中的錯誤。
代碼現在使用修飾符{ '$set': { value: '' } }
。
現在表達式check(modifier, Match.OneOf(checkEdit));
給出了錯誤,但我期望它匹配,因爲客戶端發送和console.log(modifier)
是相同的。
任何想法爲什麼它是假的?
固定
import { Match } from 'meteor/check'
添加到該文件的頂部和
使用Match.test(modifier, checkEdit);
代替。
你幾乎得到它,但你需要使用$未設置,而不是$設置 – Mikkel