为什么mongoose中的countDocuments函数不阅读我输入的变量?

icomxhvb  于 2023-03-03  发布在  Go
关注(0)|答案(1)|浏览(115)

我有一个名为collectionList的列表,我想遍历对象列表,看看mongodb集合中是否存在一个文档。如果不存在,它将为该列表项创建一个新文档。新文档name应该与对象列表中的name相同。
以下是列表:

const collectionList = [
    { name: "pages", schema: pageSchema.pageSchema },
    { name: "posts", schema: postSchema.postSchema }
]

如果没有name等于collectionList[i].name的文档,那么我希望mongoose创建一个name的新文档。
以下是发生错误的代码部分:

for (var i = 0; i < collectionList.length; i++) {
    var collectionName = collectionList[i].name
    console.log("collectionList name:",collectionName); // Outputs the collectionList[i].name to make sure it is working
    Collection.countDocuments({ name: collectionName })
        .then((data) => {
            console.log(data)
            if (data == null || data == 0 || data == false) {
                const newCollection = new Collection({
                    name: collectionName,
                    data: []
                })
                newCollection.save().then(() => {
                    console.log('collection saved', collectionName)
                }).catch((err) => {
                    console.log(err)
                })
            } else {
                console.log("I found it, but I don't know what to do!")

            }

        }).catch((err) => {
            console.log(err)
        })
}

我的mongodb集合叫做Collection,它是空的,里面没有文档。当我运行它时,它在第3行控制台记录collectionList name: pages,然后记录collectionList name: posts。当我查看我的mongodb集合时,两个文档中的name都是posts。为什么不使用name: pages创建文档?在第13行,当我控制台记录collectionName时,两次它都记录posts

ncgqoxb0

ncgqoxb01#

我想明白了。我只需要在Collection.countDocuments({ name: collectionName })之前加上await。就像这样:await Collection.countDocuments({ name: collectionName }).

相关问题