0

我有一个 Locations 模型和一个 Recorders 模型。我希望能够将两个数据集的所有数据都传递给我的视图模型。我如何访问它们,因为我认为它们不在范围内,因为我收到未定义的错误,因为我正在调用“全部”

https://gist.github.com/3998302

var Main = function () {
  this.index = function (req, resp, params) {
    var self = this;
    var data = {};
    geddy.model.Locations.all(function(err, locations) {
        data.locations = locations;
        geddy.model.Recorders.all(function(err, recorders) {
            data.recorders = recorders;
            self.respond({params: params, data: data}, {
            format: 'html'
            , template: 'app/views/locations/index'
            }
        });
    }););
  };

};

exports.Main = Main;

错误片段:

timers.js:103
            if (!process.listeners('uncaughtException').length) throw e;
                                                                      ^
TypeError: Cannot call method 'all' of undefined
    at index (G:\code\PeopleTracker\app\controllers\main.js:23:24)
    at controller.BaseController._handleAction.callback (C:\Users\Chris\AppData\Roaming\npm\node_modules\geddy\lib\base_
controller.js:387:22)
4

2 回答 2

0

派对很晚了,但我相信你可以打电话

geddy.model.Locations.all(function(err, locations) {
    geddy.model.Recorders.all(function(err, recorders) {
        var data = {};
        data.locations = locations;
        data.recorders = recorders;
        self.respond({params: params, data: data}, {
        format: 'html'
        , template: 'app/views/locations/index'
        }
    });
}););

你也可以让回复说

self.respond({params: params, locations: locations, recorders: recorders});

但是,如果您希望数据文字中的所有数据都可用,则需要在最低范围的回调中定义它。回调可以在其范围之上读取,但不能在其之上写入。

于 2014-05-17T22:52:08.260 回答
0

所以看起来你正在将data变量初始化为“未定义”。试试data = {}吧。如果这不能解决它,我会和你一起做一些故障排除。

编辑

如果这对您不起作用,请尝试再次安装 geddy:

npm uninstall -g geddy && npm install -g geddy

如果还是不行,请确保您的数据库正在实际运行,确保模型已定义(尝试geddy console检查您的模型),并确保您使用的是最新的稳定版本的 node.js。

于 2012-11-02T06:07:44.240 回答