以下data.id
变量在控制台中显示为undefined
有什么原因吗?
Meteor.methods({
'productUpdate': function(_data) {
var data = {
id: _data.id,
name: _data.name.trim(),
sku: _data.sku.toUpperCase(),
retail: _data.retail
};
Products.update(data.id, {$set: data}, function(error, result) {
console.log(data.id); // <------ WHY DOES THIS OUTPUT 'undefined'
if(error)
throw new Meteor.Error('validation', error.message, error.invalidKeys[0].name);
if(result)
logActivity('Products', data.id, 'Product updated');
});
}
});
我很困惑,但我一定错过了一些基本的东西。如果我在回调之外定义其他变量,那么它们也会起作用,例如,即使是传入的_data.id
也会返回一个值。
Collection2似乎正在修改data
对象,而没有进行防御克隆。尝试自己制作一个克隆:
Products.update(data.id, {$set: EJSON.clone(data)}, function () ...)