我想将唯一值存储到集合中。我正在使用Node.js和MongoDb。但是,如果我尝试在Find Promise中插入,则会显示“ MongoError:服务器实例池已损坏”
而且我无法在“查找承诺”之外访问集合中的数据。 请帮助我,我真的不明白如何解决这种异步模式。
function addToDBAs( data ){
mongo_client.connect(url, (err, db)=>{
if(err)
console.log(err)
else{
var dbo = db.db('uniqueSet')
dbo.createCollection('entities',(err, res)=>{
if(err)
console.log(err)
else{
console.log("collections created")
let collection = dbo.collection('entities')
let dataObjs = []
collection.find().toArray((err, items) => {
data = new Set( data, items )
data = Array.from(data)
data.map(entity => dataObjs.push({name: entity}))
dbo.collection('entities').insertMany(dataObjs)
console.log(items)
})
db.close();
}
})
}
})
}
答案 0 :(得分:1)
您在def caloriefunction():
weight = Profile.weight
height = Profile.height
age = Profile.age
isMale = Profile.gender
if isMale == "Male":
isMale = True
elif isMale == "Female":
isMale = False
else:
print("Error")
quit()
if isMale:
bmr = 66.5 + (13.75 * weight) + (5 * height) - (6.755 * age)
else:
bmr = 655.1 + (9.6 * weight) + (1.8 * height) - (4.7 * age)
bmr = round(bmr)
return bmr
完成之前正在呼叫db.close()
。您需要使用async / await或Promise等待完成insertMany
。然后
应该是这样的(具有异步/等待模式)
insertMany