【问题标题】: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);
    })()
    

    【讨论】:

    • 非常感谢,我将需要这些解决方案来进一步实施 :)
    猜你喜欢
    • 2013-09-08
    • 2020-06-29
    • 2018-05-26
    • 2018-07-30
    • 2022-11-22
    • 2019-02-27
    • 1970-01-01
    相关资源
    最近更新 更多