繁体   English   中英

猫鼬查找方法外的访问变量-Node JS

[英]Access variable outside mongoose find method - node js

在我的node js程序中,我查看了我的猫鼬数据库,然后查找并返回该集合中的值-只有一个值。

var myValueX;
myCollection.find(function(err, post) {
        if (err) {
            console.log('Error ' + err)
        } else {
            myValueX = post[0].valuex;
        }
    });

console.log('Have access here' + myValueX);

现在,我希望能够在此find方法之外使用myValueX。 我怎样才能做到这一点?

当我尝试上面的console.log时,我得到了未定义的信息-这是否有可能实现

要在myValueXfind的回调中分配后访问myValueX ,您有两个选择,第一个(自然地)在回调本身内部,或在回调中调用的函数内部,您将myValueX作为参数发送给该函数。

我认为更好的解决方案是使用诺言。

一个简单的使用承诺的解决方案如下:

function findPromise(collection) {
    return new Promise((resovle, reject) => {
        collection.find((err, post) => {
            if (err)
                return reject(err)

            // if all you want from post is valuex
            // otherwise you can send the whole post
            resolve(post[0].valuex)

        })
    })
}

findPromise(collection)
    .then((valueX) => {
        // you can access valuex here
        // and manipulate it anyway you want
        // after it's been sent from the `findPromise`
        console.log("valueX: ", valueX)
    })
    .catch((err) => {
        console.log("An error occurred. Error: ", err)
    })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM