我正在尝试创建和保存新的模型实例,并在我的MONGODB Atlas数据库中为其分配一个唯一的ID。为此,我试图使用Model.find()从模型中获取数据并将其存储在变量中,在该变量中,我可以遍历数组并检查分配的ID是否已存在于集合对象中。我可以成功记录该集合,但似乎无法将colletion数组存储在变量中。
[每当我尝试console.log(dbData)时,我都没有定义,是否还应该在get请求中调用model.find,该请求在提交表单时指向表单操作路径?
var formModel=mongoose.model("Form-Model", newFormSchema)
let dbData =formModel.find({}, function(err,data){
if(err) console.error(err)
console.log(data)
return data
})
let rndm=2
function isUnique(rndm){
let unique=dbData.some(element=>element.id===rndm)
while(unique){
rndm=Math.floor(Math.random()*10000)
unique=arr.some(element=>element.id===rndm)
}
return rndm
}
app.post("/form-data",function(req,res){
console.log(req.body)
var newForm= new formModel({
output:req.body.output,
id:isUnique(rndm)
})
newForm.save()
res.send("new user submited")
res.end()
})
编辑///////
[我在其他地方看到您需要promise或async / await等待model.find完成对象数组的获取,但是当console.logging(dbData)我得到promise待处理时,
async function dbData() {
try{
let dbData= await formModel.find({})
return dbData
}
catch(err){
console.log(err)
}
}
console.log(dbData()) // returns Promise { <pending> }
使用.then(function(res)//在这里执行代码并从异步函数返回结果)