![](/img/trans.png)
[英]How to add reference of one schema to another in Mongoose and inserting data by json?
[英]Unable to add data of one mongoose model into another
新手开发人员在这里。
我有2个架构:
var categorySchema = new mongoose.Schema({
name: String
});
var subCategorySchema = new mongoose.Schema({
name: String,
parent: {
name: String,
id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Parent'
}
}
});
我正在制作种子文件以进行测试。 我首先创建所有类别:
async function addCats() {
try {
for (const category of categories){
await Category.create({name:category});
console.log("Created Category: " + category)
}
}
catch(err) {
console.log(err);
}
}
我遇到的问题是随后创建子类别,所有类别均已正确创建。
但是然后,如果我运行:
async function addSubs(){
try {
for(const sub of sub_categories) {
let foundParent = await Category.find({name: sub.parent});
console.log('Parent: ' + foundParent);
let createdSub = await SubCategory.create({name:sub.name, parent: foundParent});
await console.log("Created sub-category: " + createdSub.name + " with parent: " + createdSub.parent + " parents ID is: " + createdSub.parent.id)
}
}
catch(err) {
console.log(err);
}
}
我懂了
Parent: { _id: 5b474611e6eb361cd5d051cc, name: 'Men\'s', __v: 0 }
Created sub-category: Shirts with parent: {} parents ID is: undefined
它找到了正确的父级,但是即使那样,它似乎也没有像预期的那样放入子类中,我也不知道为什么。
我也尝试做:
let createdSub = await SubCategory.create({name:sub.name, parent:{ name: foundParent.name, id: foundParent._id}});
但是我得到:
Created sub-category: Shirts with parent: {} parents ID is: undefined
parent和IDK仍然是子类别和IDK中的一个空对象,为什么未定义id。
整个上午都被卡住了,并且对该种子文件还有更多的东西。
弄清楚了,我记得学习x.find返回一个数组,所以我认为是从Category.find请求返回的foundParent变量在数组中,我使用了Category.findOne,然后可以访问到的变量是我的代码:
for(const sub of sub_categories) {
var foundParent = await Category.findOne({name: sub.parent});
let newSub = {name:sub.name, parent: {name:foundParent.name, id: foundParent._id}};
let createdSub = await SubCategory.create(newSub);
由于父变量是一个对象,因此很难发现,因此在打印时:
console.log(foundParent);
并得到:
{ _id: 5b477ec9818a58240da721e5, name: 'Children\'s', __v: 0 }
看起来好像不是在数组中。
我猜您也可以从数组中取出它,然后访问它,但是我不确定该怎么做。
如果我尝试这样做,即使使用findOne并在数组/可访问性之外获取foundParent,我仍然会遇到的一个问题:
let newSub = {name:sub.name, parent: foundParent};
然后,还会将newSub.parent打印为空对象{},并且未定义newSub.parent.id或.name。
感谢您的帮助,如果有人知道最后一个问题的答案,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.