node.js - Mongoose : Remove object from array based on ID (Cast Error)

标签 node.js mongodb

我有一个看起来像这样的模型:

mongoose.Schema({
  username: String,
  posts: [{ type: Schema.Types.ObjectId, ref: 'Post' }]
});

我有一个要传递 ObjectID 的端点:

app.delete('/post', function(req, res) {
  User.findOne({ _id: req.user._id}, function(err, result) {
    result.pull({ _id: req.body.post_id });
  });
});

感觉它应该可以工作,但我收到了这个错误:

CastError:转换为 ObjectId 值“[object Object]”失败

我做错了什么?

最佳答案

如果你想从数组中删除一个元素,使用这个

User
.update( 
  {_id: req.user._id}, 
  { $pull: {posts: req.body.post_id } } 
)
.then( err => {
  ...
});

这里是 documentation

关于node.js - Mongoose : Remove object from array based on ID (Cast Error),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973960/

相关文章:

node.js - 查询mongo数据库字段值,不返回内容

MongoDB:无法规范化查询:BadValue $not 需要正则表达式或文档

java - 从 Java/MySQL 向 Node.js 发出信号的最有效方法是什么?

javascript - Ajax Post与express js获取req参数错误

javascript - 给定一个字符串格式的函数,我如何将它转换回 javascript 中的函数?

node.js - node.js 中是否存在从 child_process.spawn 消耗 stdout 的竞赛?

mongodb - 嵌入式文档中两个值之间的差异

javascript - 在没有路径参数值和查询参数的情况下,如何在express中间件中获取我定义的确切URL路径?

ruby - 获取 MongoDB 中列的最高值

node.js - 使用 Mongoose ORM 的 killer 锏是什么?