属性 没有被添加到 JS 对象
Property not being added to JS object
所以我试图在 return 之前向用户对象添加一个字段,但由于某种原因 属性 没有被添加。有什么想法吗?
returnUser = function(userRes) {
console.log(">POST /returnuser< Returning user w/ userId: " + userRes.userId + " deviceToken: " + userRes.deviceToken);
return Location.findOne({
users: {
$elemMatch: {
user: userRes.userId
}
}
}, function(error, response) {
userRes.currentLocation = response;
console.log(userRes);
return res.send(userRes);
});
};
因此,在 returnUser 函数中,我在数据库中搜索用户的当前位置,将其添加到 userRes 对象,然后 returning 它。但是当我记录 userRes 对象时,它不包含 属性。我的代码有问题吗? userRes 目前看起来像这样:
{ _id: 1,
createTime: 1428477183281,
deviceId: '982f24khsd',
deviceToken: 'kjs398fskjjg5fb43ds323',
firstName: 'Cat',
lastName: 'Man',
email: 'cat@mandu.com',
__v: 0,
users: [],
locations: [],
lngLat: [] }
事实证明,userRes 对象实际上是从 mongoose 查询返回的 mongoose 模型实例,它是不可变的。
要解决此问题,您最好调用 lean()
,这将为您提供一个普通的 JS 对象,而不是完整的模型实例。
或者,如果您无权访问查询,您可以执行以下操作:
mutableUserRes = JSON.parse(JSON.stringify(userRes));
它复制了整个对象,但它现在是一个简单的 JS 对象,而不是猫鼬模型实例。
所以我试图在 return 之前向用户对象添加一个字段,但由于某种原因 属性 没有被添加。有什么想法吗?
returnUser = function(userRes) {
console.log(">POST /returnuser< Returning user w/ userId: " + userRes.userId + " deviceToken: " + userRes.deviceToken);
return Location.findOne({
users: {
$elemMatch: {
user: userRes.userId
}
}
}, function(error, response) {
userRes.currentLocation = response;
console.log(userRes);
return res.send(userRes);
});
};
因此,在 returnUser 函数中,我在数据库中搜索用户的当前位置,将其添加到 userRes 对象,然后 returning 它。但是当我记录 userRes 对象时,它不包含 属性。我的代码有问题吗? userRes 目前看起来像这样:
{ _id: 1,
createTime: 1428477183281,
deviceId: '982f24khsd',
deviceToken: 'kjs398fskjjg5fb43ds323',
firstName: 'Cat',
lastName: 'Man',
email: 'cat@mandu.com',
__v: 0,
users: [],
locations: [],
lngLat: [] }
事实证明,userRes 对象实际上是从 mongoose 查询返回的 mongoose 模型实例,它是不可变的。
要解决此问题,您最好调用 lean()
,这将为您提供一个普通的 JS 对象,而不是完整的模型实例。
或者,如果您无权访问查询,您可以执行以下操作:
mutableUserRes = JSON.parse(JSON.stringify(userRes));
它复制了整个对象,但它现在是一个简单的 JS 对象,而不是猫鼬模型实例。