0

我需要将 json 对象从匿名函数加载到变量实例

在这个例子中是未定义的实例。

我敢肯定,解决方案很简单,但是节点中的新手并没有找到答案......:(

模块.exports = {
    创建:函数(req,res){
        instance = EngineInstance.findById(req.body.engineInstanceId).exec(function(err,instance){
            if (err) return res.send(err,500);
            if (!instance) return res.send("找不到引擎实例!", 404);
            返回实例;
        });
        命名空间 = 实例.命名空间;...
    }
};
4

2 回答 2

1

您对异步代码的工作方式有一个非常普遍和基本的误解。句号。阅读教程并进行指导练习。上面的异步 IOfindById使用 CALLBACKS 调用带有结果变量的函数。它不使用返回值,因为它们由于异步代码执行的顺序而无用。

module.exports = {
    create: function(req,res){
        instance = EngineInstance.findById(req.body.engineInstanceId).exec(function(err,instance){
            if (err) return res.send(err,500);
            if (!instance) return res.send("No engine instance found!", 404);
            //it is useless to return a value from this anonymous async callback
            //nothing will receive it. It will be ignored.
            //probably something like this is what you need
            req.namespamce = instance.namespace;
        });
        //do NOT put code here that needs req.namespace. This code runs BEFORE
        //the `findById` I/O callback runs.
    }
};
于 2013-09-02T15:34:58.443 回答
0

将 MYSQL 查询更改为一起查询多个事物,而不是隔离 accessPoint 的查询并添加以下代码:

results[0].accessPoint = JSON.parse(results[0].accessPoint)
res.send(results[0]);

现在我得到了这个,这正是我想要的:

"accessPoint": {
    "mode": "client",
    "rate": 0,
    "ssid": "RMG",
    "signal": 0,
    "channel": 0,
    "password": "",
    "username": "example@aol.com"
  }
于 2016-12-06T19:46:06.903 回答