【发布时间】:2016-07-12 01:01:53
【问题描述】:
我正在尝试使用 $addToSet 将乐器添加到流星中的 Profiles 集合中。该代码在 mongo 中有效,但在流星方法调用中无效。我可以使用 $set 更新所有其他字段而不会出现任何问题,因此我知道这是在找到正确的用户。
updateInstruments(instruments) {
if (!this.userId) {
throw new Meteor.Error('not-logged-in',
'Must be logged in to update last name.');
}
check(instruments, String);
if (instruments.length === 0) {
throw Meteor.Error('instruments-required', 'Must provide at least one instrument.');
}
let instrArray = instruments.split(',');
instrArray.forEach(function(instrument){
instrument = instrument.trim();
Profiles.update({ userId: this.userId }, { $addToSet: { instruments: instrument } });
});
},
我什至尝试过:
Profiles.update({ userId: this.userId }, { $addToSet: { instruments: {$each: [instrument] } }});
还有:
Profiles.update({ userId: this.userId }, { $addToSet: { instruments: [instrument] }});
我也尝试过 $push ,但那里也没有发生任何事情。流星中有某种错误吗?我需要配置其他设置以允许更新数组吗?
更新: 根据请求,这是客户端代码:
updateInstruments() {
if (_.isEmpty(this.data.instruments)) return;
var self = this;
let instruments = this.data.instruments;
this.callMethod('updateInstruments', instruments, (err) => {
if (err) return this.handleError(err);
});
}
谢谢!
【问题讨论】:
-
能否也包含您的客户端代码?这可能是您如何从客户端传递“仪器”并拆分、修剪造成的问题。