gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:32 24 4
gpt4 key购买 nike

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

让我描述一下我的问题:

我有两个架构

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com