繁体   English   中英

无法将一种猫鼬模型的数据添加到另一种

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM