如何从Node路由中的JS闭包返回数据?

时间:2016-11-25 17:01:20

标签: javascript node.js

我正在设置NodeJS应用程序,我需要从etcd获取数据。我正在使用nodejs-etcd模块。

以下是我试图从闭包中的闭包中返回一个值的方法:

router.get('/', function(req, res, next) {

  var etcd = req.etcd;

  var result = etcd.read({key: '/reward/christopher'}, function (err, result, body) {

    // parse the json body so that it can be read
    object = JSON.parse(body);

    // return the value of the key
    return object.node.value;
  });

  console.log(result);

});

但是,我得到的只是来自etcd对象的客户端连接数据,而不是我想要返回的值:

Client {
  version: 'v2',
  baseurl: 'http://turtle-host-03.turtlesystems.local:4001/v2',
  agent: false }
GET / 500 807.246 ms - 1338
GET /stylesheets/style.css 304 6.856 ms - -

回调函数中etcd服务器的值是正确的,它只是将它放入外部函数。

我怀疑这是一个误解,关于这个闭包在etcd中的read方法的回调中是如何工作的。

更新1

按要求添加了代码,而不是链接到要点。

0 个答案:

没有答案