我有一个应用程序正在对服务器进行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' }
有人知道这个问题是否有解决方法?如果我对问题中的任何内容都不清楚,请告诉我。谢谢。
答案 0 :(得分:1)
如果您不介意在文档中覆盖数据,您只需使用||
运算符,并在左侧的任何时候返回一个空字符串(或任何其他值)。运算符求值为“falsey”值:
events : req.query.userEvents || ""