是否有办法根据情况允许mongoose字段未定义?

时间:2014-05-21 03:51:51

标签: ajax node.js mongodb mongoose

我有一个应用程序正在对服务器进行ajax调用,以便使用mongoose将用户信息保存在数据库中。 ajax调用如下所示:

 $.ajax({
                type: 'GET',
                url:"http://localhost:3000/updateuser",
                data: {
                    _id        : userID,
                    userEvents : events,
                    userGroups : groups,
                    latitude   : position.coords.latitude, 
                    longitude  : position.coords.longitude
                },
                dataType: 'jsonp',
                contentType: 'application/json',
                crossDomain: true,
                success: function(data){
                    console.log(data);

                },
                error: function(){
                    console.log('there was an error');
                }
            }); 

保存用户信息的远程服务器如下所示:

var user   = {_id        : req.query._id};
var update = { events    : req.query.userEvents,
               groups    : req.query.userGroups,
               latitude  : req.query.latitude,
               longitude : req.query.longitude,
               timestamp : thisTime};

locationModel.update(user,update,{multi:true},function(err,numAffected){
    console.log(numAffected);
    console.log(err);

我遇到的问题是有时userEvents或userGroups作为空字段发送。这一切都取决于用户,我不能保证该字段将被填充。如果该字段为空,我从mongoose收到以下错误:

 undefined
 { message: 'Cast to string failed for value "undefined" at path "events"',
  name: 'CastError',
  type: 'string',
  value: undefined,
  path: 'events' }

有人知道这个问题是否有解决方法?如果我对问题中的任何内容都不清楚,请告诉我。谢谢。

1 个答案:

答案 0 :(得分:1)

如果您不介意在文档中覆盖数据,您只需使用||运算符,并在左侧的任何时候返回一个空字符串(或任何其他值)。运算符求值为“falsey”值:

events : req.query.userEvents || ""