用猫鼬在mongodb中加载和保存文档

聚四氟乙烯

我有运行express作为服务器端框架的节点。

我创建了以下端点:

app.post('/post/save', auth.auth, function (req, res) {

Post.findById(req.body._id, function (err, post) {
  post = post || new Post();

  post.author.name = req.user.getName();
  post.author.id = req.user._id;
  post.title = req.body.title;
  post.body = req.body.body;

  post.save(function (err, object) {
    err && res.send(500);
    res.status(200).send({ /*id: object._id*/ });
  });  
});

});

当我第一次调用它时,它可以工作。当我第二次调用它时,它失败了。该请求只是保持待处理状态,并且从save函数调用返回的对象是未定义的。

req.body._idundefined在这两种请求。我尝试连续创建2个新帖子。

我想要做的是检查文档是否存在,是否存在,对其进行更新然后保存,或者创建一个新文档。

我知道存在upsert之类的东西,但是我不能使用它,因为我需要预先保存的中间件来触发,并且它仅在之前触发.save

谁能看到错误?

聚四氟乙烯

一旦我unique从模型中删除了字段,并将集合拖放到数据库中,我的原始帖子就起作用了。

删除索引可能就足够了;参见Leonid Beschastnys的评论;

当您将字段设置为唯一时,Mongoose会在该字段上创建唯一索引。即使删除了unique:true标志,该索引仍会保留在MongoDB中。删除集合索引应该可以解决您的问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章