这可能是一个简单的JavaScript问题。我终于得到了这个流星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);
}
});
答案 0 :(得分:0)
当你使用upsert时,除非条目已存在,否则你不会知道_id。在这种情况下,如果使用文档而不是_id搜索db条目,则应该得到所需的内容。
//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);
}
});
答案 1 :(得分:0)
我找到了我要找的东西。
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()
}
);