Почему Model.find не хранит данные в переменной? - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь создать и сохранить новые экземпляры модели и присвоить каждому из них уникальный идентификатор в моей базе данных MONGODB Atlas. Для этого я пытаюсь получить данные из моих моделей с помощью Model.find () и сохранить их в переменной, где я могу l oop через массив и проверить, существует ли уже присвоенный идентификатор в объектах коллекции. Я могу успешно зарегистрировать коллекцию, но кажется, что я не могу сохранить массив коллекции в переменной.

Всякий раз, когда я пытаюсь использовать console.log (dbData), я получаю значение undefined, должен ли я также вызывать 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()
    })

РЕДАКТИРОВАТЬ //////

Я видел где-то еще, что вам нужно либо обещание, либо async / await, чтобы дождаться model.find to fini sh получение массива объектов но когда console.logging (dbData) я получаю отложенное обещание,

async function dbData() {
try{
let dbData= await formModel.find({})
return dbData
    }
catch(err){
console.log(err)
    }

}
console.log(dbData()) // returns Promise { <pending> }

1 Ответ

0 голосов
/ 09 мая 2020

использовать .then (function (res) // выполнить код с результатом, возвращенным функцией asyn c здесь)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...