如何在流星upsert语句中使用null或''?

时间:2014-02-28 16:18:47

标签: javascript mongodb null meteor upsert

这可能是一个简单的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);
  }
});

2 个答案:

答案 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()
    }
);