如何知道Mongoose'的追加销售创建了一个新文档
How to know if Mongoose's upsert created a new document?
我在node.js/express.js:中有这段代码
var User = mongoose.model('User');
var usersRouter = express.Router();
usersRouter.put('/:id', function(req, res) {
req.body._id = req.params.id;
var usr = new User(req.body);
usr.validate(function (err) {
if (err) {
res.status(400).json({});
return;
}
var upsertData = usr.toObject();
delete upsertData._id;
User.update({_id: usr._id}, upsertData, {upsert: true}, function(err) {
if (err) {
res.status(500).json({});
return;
}
res.status(204).json({});
});
});
});
它工作正常,但如果已经创建了一个新文档(状态201,响应体中有json)或更新了一个现有文档(状态204),我想向客户端发送一个不同的响应。
有没有办法区别于User.update
的回调?
使用回调函数中的第三个参数:
...
User.update({_id: usr._id}, upsertData, {upsert: true}, function(err, num, n) {
if (err) {
res.status(500).json({});
return;
}
if (!n.updatedExisting) {
/* new document */
}
res.status(204).json({});
});
...
n
是这样一个对象:
{ updatedExisting: false,
upserted: <ObjectId>,
n: 1,
connectionId: 11,
err: null,
ok: 1 }
当文档被更新时,updatedExisting
属性为true
,因此它是以前创建的。如果是false
,则表示新文档是在该调用期间创建的。
相关文章:
- 将文档的MongoDB字段合并到一个文档中
- window.opener调用函数给了我一个文档.getElementById(..)为null
- Mongoose创建一个文档,如果找不到指定的字段,则更新文档中的数组
- MongoDB:确保只有一个文档可以将字段设置为 true
- 为什么<文本区域>的值在导入到另一个文档时会重置
- 如何使用 JQuery 将 H1 元素与另一个文档中的 H1 交换
- 如何将这个PHP、Javascript和HTML文档合并为一个文档
- 我可以保留一个文档片段的引用吗
- 获取具有特定嵌套字段值的所有文档,无需一个文档
- mongoose/mongodb查询从javascript数组中的每个发送方获取最后一个文档
- 如何使用另一个文档数组中的id对光标进行排序
- 检查集合是否至少包含一个文档
- 在一个文档中使用两次javascript文档就绪
- 如何在一个文档中使用两个id.getElementById类型函数
- 如何获得一个文档的整个宽度和高度(没有jQuery)
- 如何获取数组中包含另一个文档的所有文档
- 如果我删除了一个文档,它还需要回收吗?
- 搜索一个文档并更新子文档的一些字段
- 如何使用Javascript和HTML创建一个文档文件
- 是否有可能在一个文档中使用JavaScript来更改另一个文档中的HTML ?