为什么Model.find不将数据存储在变量中?

问题描述 投票:0回答:1

我正在尝试创建和保存新的模型实例,并在我的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> }
javascript mongodb mongoose
1个回答
0
投票

使用.then(function(res)//在这里执行代码并从异步函数返回结果)

© www.soinside.com 2019 - 2024. All rights reserved.