0

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)
4

2 に答える 2

0

dataしたがって、変数を「未定義」に初期化しているように見えます。data = {}代わりに試してください。それでも問題が解決しない場合は、トラブルシューティングを行います。

編集

それでも問題が解決しない場合は、geddyをもう一度インストールしてみてください。

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

それでも問題が解決しない場合は、DBが実際に実行されていることを確認し、モデルが定義されていることを確認し(モデルを確認してみgeddy consoleてください)、ノードの最新の安定バージョンを使用していることを確認してください。

于 2012-11-02T06:07:44.240 に答える
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 に答える