我有一个Locations模型和一个Recorders模型。我希望能够将两个数据集的所有数据传递给我的视图模型。我如何访问它们因为我认为它们不在范围内,因为我收到了未定义的错误,因为我称之为'all'
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)
答案 0 :(得分:0)
所以看起来你正在将data
变量初始化为'undefined'。请尝试使用data = {}
。如果这不能解决问题,我会对你进行一些故障排除。
修改强>
如果不适合您,请尝试再次安装geddy:
npm uninstall -g geddy && npm install -g geddy
如果没有这样做,请确保您的数据库实际上正在运行,确保定义了模型(尝试geddy console
检查您的模型),并确保您使用的是最新版本稳定版本的节点。
答案 1 :(得分: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});
但是如果您希望从数据文字中获得所有数据,则需要在最低范围回调中定义它。回调可以在其范围之上读取,但不能在其上面写入。