Ajax 是否有一种方法允许猫鼬字段根据情况而不定义?
我有一个应用程序正在对服务器进行ajax调用,以便使用mongoose将用户信息保存在DB中。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({
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如果你想提交答案,我会给你打勾。