MongooseJS return 是否是 save() 上的新结果对象?
Does MongooseJS return a new fresh result object on save()?
默认情况下 MongoDB on collection.save() returns 文档中所述的 WriteResult 对象:
The save() returns a WriteResult object that contains the status of the insert or update operation.
但是使用 Mongoose(我猜节点中的底层 mongodb 驱动程序)你可以添加第二个参数,它填充了你刚刚插入的整个对象和新的 _id :
var user = new User(req.body);
user.save(function (err, userResult) {
if (err) {
log.error(err);
}
log.debug('User data: ', userResult);
});
所以我的问题是:
userResult
是否包含从 Mongo 检索到的数据并且它是一个新对象或者传递的对象是否已经传递到 save() 方法并且来自数据库调用仅与一些部分数据合并,如生成的 _id and/or 创建日期?
如果你看一下 Model.prototype.save()
:
https://github.com/Automattic/mongoose/blob/8cb0e35/lib/model.js#L254
看起来您在 userResult
.
中找回了相同的模型实例 (self
)
为了回答你的问题,返回的对象是一个新对象 -- 不是原来的对象(所以 user
!= userResult
)
Mongoose 支持一些 options -- new: true
和 lean: false
设置您可能会感兴趣,以修改不同操作中返回数据的方式(如果您希望它是一个新的选择或不关心)。
您可以使用以下方法验证 'new object' 是否如此:
var user = new User(req.body);
user.save(function (err, userResult) {
if (err) {
log.error(err);
}
user.name = 'TEST';
console.log(`${userResult.name} will be undefined but ${user.name} will not be`);
log.debug('User data: ', userResult);
});
默认情况下 MongoDB on collection.save() returns 文档中所述的 WriteResult 对象:
The save() returns a WriteResult object that contains the status of the insert or update operation.
但是使用 Mongoose(我猜节点中的底层 mongodb 驱动程序)你可以添加第二个参数,它填充了你刚刚插入的整个对象和新的 _id :
var user = new User(req.body);
user.save(function (err, userResult) {
if (err) {
log.error(err);
}
log.debug('User data: ', userResult);
});
所以我的问题是:
userResult
是否包含从 Mongo 检索到的数据并且它是一个新对象或者传递的对象是否已经传递到 save() 方法并且来自数据库调用仅与一些部分数据合并,如生成的 _id and/or 创建日期?
如果你看一下 Model.prototype.save()
:
https://github.com/Automattic/mongoose/blob/8cb0e35/lib/model.js#L254
看起来您在 userResult
.
self
)
为了回答你的问题,返回的对象是一个新对象 -- 不是原来的对象(所以 user
!= userResult
)
Mongoose 支持一些 options -- new: true
和 lean: false
设置您可能会感兴趣,以修改不同操作中返回数据的方式(如果您希望它是一个新的选择或不关心)。
您可以使用以下方法验证 'new object' 是否如此:
var user = new User(req.body);
user.save(function (err, userResult) {
if (err) {
log.error(err);
}
user.name = 'TEST';
console.log(`${userResult.name} will be undefined but ${user.name} will not be`);
log.debug('User data: ', userResult);
});