我有一个带有参考字段的模型方案,如下所示:
/usr/local/bin/foo/lib/libfile1.rb
我的测试db种子代码正在使用来自json文件的数据,如下所示:
const UserSchema = new mongoose.Schema({
// ...
uf:{
type: mongoose.Schema.Types.ObjectId, ref: 'UF', index: true
},
});
在种子处理期间,在模型保存方法之后,我收到此错误:
[
{ "_id": 91283,
"name":"Test user",
"uf": 124411923,
"version": 2
}
]
这是负责加载jsons并保存到数据库的代码,我已经对种子列表进行了排序,以便首先插入UF:
ValidationError: User validation failed: uf: Cast to ObjectID failed for value "124411923" at path "uf"
errors:
{ uf:
{ MongooseError: Cast to ObjectID failed for value "124411923" at path "uf"
有人可以帮忙吗?
答案 0 :(得分:2)
在您的用户文档中,您没有包含有效的ObjectId,因此当您尝试将其存储为ObjectId类型时会出现错误。
Refs只能防御来自其他集合的_id字段。
因此,在您的用户文档中,您需要包含对UF集合中_id字段的引用:
[
{
"_id": 91283,
"name":"Test user",
"uf": [_id from UF here],
"version": 2
}
]
注意:如果您已在UF架构中明确定义了_id字段作为Number类型,那么您可以通过匹配类型从您的用户架构中引用它:
const UserSchema = new mongoose.Schema({
// ...
uf: {
type: Number, ref: 'UF', index: true
},
});
答案 1 :(得分:1)
您似乎没有有效的ObjectId字符串。尝试使用123456789012
,因为它是一个12字节的字符串。