node.js - Actor 错误: Cast to ObjectId failed for value "" at path "_id"

标签 node.js mongodb mongoose

嗯,我看到这里有一些这样的帖子,但它们对我没有帮助......

让我描述一下我的问题:

我有两个架构

var A = new Schema({
   someAttribut: {type: String},
   b: {type: ObjectId, ref:'B'}
});

var B = new Schema({
   someAttribut2: {type: Boolean, 'default': false'}
});

现在我的情况是我已经有一个 B 对象,并且我想创建一个 A 对象。

所以我这样做:

var a = new A(req.aFromClient); // {_id:null, someAttribute:'123', b:null}
//load b from Database ... 
a.b = existingBFromDatabase; // {_id: 'Sb~Õ5ÙÐDâb', someAttribute2: false}

b 对象是从我的 monogDB 加载的。调试器向我显示 b 的有效 ObjectId(53627ed535d9d04416e26218 或 Sb~Õ5ÙÐDâb)。

但是当我保存新的 A-Object 时,出现错误:'CastError: 路径“_id”处的值“”转换为 ObjectId 失败'

我不明白为什么会出现此错误。 首先,我没有在模式中定义 id,所以 mongoose 应该添加它,这似乎可行。 其次,我认为当我创建一个对象时,mongoose应该生成一个新的ID。

你有什么建议吗?

最佳答案

根据代码中的注释,_id 确实有一个值(null)。因此,您需要从 req.aFromClient 中删除 _id,然后再从中创建新的 A 文档:

delete req.aFromClient._id;
var a = new A(req.aFromClient);

关于node.js - Actor 错误: Cast to ObjectId failed for value "" at path "_id",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23444670/

相关文章:

javascript - koa2 使用 koa-bodyparser 和简单的 GET

node.js - Twilio - 创建新号码后需要从应用程序动态设置 Webhook

node.js - 在 'capture' 上获得的 Artillery.io 值在 'expect' 上不可用

java - 如何使用 MongoDB API Java 在数组中查找文档?

mongodb - 具有分页数据和总计的 Mongo 聚合

mongodb - 如何在MongoDB中进行关键字查询

mongodb - Mongoose.find() 如何查询属性大于某个数字或值为空或属性不存在的文档?

javascript - Node.js 通过带有传递参数的 shell 脚本执行 python 脚本

node.js - 扩展 mean.io 的用户包

javascript - 提交具有相同 'name' 属性的多个输入字段