【发布时间】:2017-12-21 05:04:21
【问题描述】:
我有一个带有如下参考字段的模型方案:
const UserSchema = new mongoose.Schema({
// ...
uf:{
type: mongoose.Schema.Types.ObjectId, ref: 'UF', index: true
},
});
我的测试数据库种子代码正在使用来自 json 文件的数据,如下所示:
[
{ "_id": 91283,
"name":"Test user",
"uf": 124411923,
"version": 2
}
]
在种子过程中,在模型保存方法之后,我收到了这个错误:
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"
这是负责加载 jsons 并保存到数据库的代码,我已经对种子列表进行了排序,以便首先插入 UF:
function seed() {
console.log('Starting db seed...');
return Promise.each(initialData, (data) => {
// path to mongo model js file
let Model = require(data.model);
removeModel(Model)
.then(() => {
console.log('[' + data.name + '] model removed. ');
return saveModel(data, Model);
}).then(() => {
console.log('[' + data.name + '] model saved');
}).catch( (err) => {
console.error('Error seeding db', err);
});
});
}
/**
* Saves model to the database
* @param {*} data
* @param {*} Model
*/
function saveModel(data, Model) {
// path to json data file
let seedList = require(data.seed);
return Promise.map(seedList, function(seed) {
let newItem = new Model(seed);
return newItem.save({});
});
}
谁能帮忙?
【问题讨论】:
-
正如错误所说,
124411923不能转换为 ObjectId。 -
没用的朋友
-
抱歉,我只是不确定您遗漏了什么。您已在架构中将
uf定义为 ObjectId,但您试图将124411923放入该字段。没有转换。 -
我正在尝试理解 mongodb 的引用概念。如何在 json 中引用另一个 mongo 文档?就像外键一样。
-
你可以阅读那个here。
标签: json node.js mongodb mongoose seeding