这可能是
一个简单的javascript问题。我终于让这个 meteor upsert 语句工作了,除非在匹配记录尚不存在的情况下。如果我用 '' 或 null 替换chan._id,它就可以工作,所以我想做的是在 chan 找不到现有记录的情况下简单地使用 null 代替chan._id。我只是不知道怎么写这样的东西。
//client
var chfield = t.find('#today-channel').value,
chan = Today.findOne({channel: chfield})
Meteor.call('todayUpsert', chan._id, {
channel: chfield,
admin: Meteor.userId(),
date: new Date(),
});
//client and server
Meteor.methods({
todayUpsert: function(id, doc){
Today.upsert(id, doc);
}
});
当您使用 upsert 时,除非该条目已经存在,否则您将不知道_id。在这种情况下,如果您使用文档而不是_id搜索数据库条目,您应该得到所需的内容。
//client
var chfield = t.find('#today-channel').value;
Meteor.call('todayUpsert', {
channel: chfield,
admin: Meteor.userId(),
date: new Date(),
});
//client and server
Meteor.methods({
todayUpsert: function(doc){
// upsert the document -- selecting only on 'channel' and 'admin' fields.
Today.upsert(_.omit(doc, 'date'), doc);
}
});
我找到了我要找的东西。
var chfield = t.find('#today-channel').value,
Meteor.call('todayUpsert',
Today.findOne({channel: chfield}, function(err, result){
if (result) {
return result._id;
}
if (!result) {
return null;
}
}),
{
channel: chfield,
admin: Meteor.userId(),
date: new Date()
}
);