Я пытаюсь создать и сохранить новые экземпляры модели и присвоить каждому из них уникальный идентификатор в моей базе данных 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> }