嗯,我看到这里有一些这样的帖子,但它们对我没有帮助......
让我描述一下我的问题:
我有两个架构
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/