【问题标题】:Returning data from Model.find() function in mongoose从猫鼬中的 Model.find() 函数返回数据
【发布时间】:2022-01-15 16:30:55
【问题描述】:
首先我想明确一点,我是 node.js 的新手,这听起来像是一个愚蠢的问题,但是,我应该如何从 mongoose 的 model.find() 函数中返回数据(例如. 用 var.exports = var)?
const data = () =>
{
MyModel.find().then(function(result){
console.log(result);
return(result);
});
}
exports.data = data
由于查询是异步的,在函数完成之前我无法检索这些数据(所以永远不会)。无论如何要在变量中返回这些信息,例如:
const retriever = require('../utils/test.js') //calling the exports file
test = retriever.data
console.log(test)
非常感谢您
【问题讨论】:
标签:
javascript
node.js
mongoose
【解决方案1】:
通过 promises 你可以实现如下
const data = () => {
return MyModel.find({});
}
// using it in another function
const result = await data();
【解决方案2】:
1.您可以使用回调,如下所示
const data = (callback) =>
{
MyModel.find().then(function(result){
console.log(result);
//return(result);
callback(results);//we pass in a function which will be used to pull out
//data
});
}
exports.data = data
// 使用此代码的区域
const {data} = require('./to/data')
//show data
data(function (result) {
console.log( result );// data from callback
})
2。使用异步/等待承诺
const data = async () =>
{
let results = await MyModel.find();
}
exports.data = data
关于使用此功能
const {data} = require('./to/data')
(async function () {
let res = await data();
console.log(res);
})()