Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 是否有一种方法允许猫鼬字段根据情况而不定义?_Ajax_Node.js_Mongodb_Mongoose - Fatal编程技术网

Ajax 是否有一种方法允许猫鼬字段根据情况而不定义?

Ajax 是否有一种方法允许猫鼬字段根据情况而不定义?,ajax,node.js,mongodb,mongoose,Ajax,Node.js,Mongodb,Mongoose,我有一个应用程序正在对服务器进行ajax调用,以便使用mongoose将用户信息保存在DB中。ajax调用如下所示: $.ajax({ type: 'GET', url:"http://localhost:3000/updateuser", data: { _id : userID, userEvents

我有一个应用程序正在对服务器进行ajax调用,以便使用mongoose将用户信息保存在DB中。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);
保存用户信息的远程服务器如下所示:

 $.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' }

有人知道这个问题是否有解决办法吗?如果我对这个问题有什么不清楚的地方,请告诉我。谢谢

如果您不介意文档中的数据会被覆盖,只要使用
|
运算符,并在运算符左侧计算为“false”值时返回空字符串(或任何其他值):


events:req.query.userEvents | |?”
?如果您希望在运行更新时覆盖事件,则只能使用@wiredparie解决方案。你真的应该构建你的更新对象来适应从前端传入的数据。这肯定会奏效。如果事件不存在,则覆盖它们实际上符合我的应用程序的逻辑@WiredPairie如果你想提交答案,我会给你打勾。