我有一个名为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
。
1条答案
按热度按时间ncgqoxb01#
我想明白了。我只需要在
Collection.countDocuments({ name: collectionName })
之前加上await
。就像这样:await Collection.countDocuments({ name: collectionName })
.