0

私は Node を初めて使用し、API (JSON または XML) からデータを呼び出して、レンダリングされたビューに表示できるように Keystone.JS アプリを変更する方法を学ぼうとしています。

私のアプリの現在のコードは、ビュー エンジンが私のアプリのハンドルバーであることを除いて、基本的にこのデモ アプリhttps://github.com/JedWatson/keystone-demoのクローン バージョンです。私がこれまでに試みたのは、リクエスト パッケージをインストールし、keystone.js ファイルのドキュメントのコードをいじってみましたが、うまくいきませんでした。

次に、model/api.js ファイル、routes/api.js、routes/views/api.js、templates/views/api.hbs を作成し、リクエスト ドキュメントのコード例をもう一度試してみましたが、自分が何であるかを把握することさえできませんでした。これらすべての新しいページが私のアプリ内でどのように機能したか。

API を呼び出して、要求された情報をアプリのレンダリング ビューの 1 つに表示する方法を理解していただければ幸いです。前もって感謝します!

4

1 に答える 1

0

次のようにモデル ロジックから API をヒットできます https://github.com/r3dm/shpe-sfba/blob/master/models/Event.js#L69ノードの組み込み http ライブラリhttp://devdocs を使用できます。 io/ノード/http

// Below we call the Facebook api to fill in data for our model
Event.schema.pre('save', function(next) {
    var myEvent = this;

    var apiCall = 'your API string';

    https.get(apiCall, function(res) {
        var body = '';
        res.on('data', function(d) { body += d; });
        res.on('end', function() {
        body = JSON.parse(body);

        if (body.error) {
            var err = new Error('There was an error saving your changes. Make sure the Facebook Event is set to "Public" and try again');
            next(err);
        } else {
            next();
        });
    })
    .on('error', function(e) {
        console.log(e);
    });
});

他のシナリオでデータを取得したい場合は、http リクエストをinitLocalsin に追加してみてくださいroutes/middleware.js

于 2015-01-13T00:51:04.063 に答える