0

我是 Node 的新手,正在尝试学习如何修改我的 Keystone.JS 应用程序,以便它可以从 API(JSON 或 XML)调用数据并将其显示在呈现的视图中。

我的应用程序中的当前代码本质上是这个演示应用程序的克隆版本https://github.com/JedWatson/keystone-demo除了视图引擎是我的应用程序中的 Handlebars。到目前为止,我尝试的是安装请求包并在我的 keystone.js 文件中使用文档中的代码,但没有运气。

然后我创建了一个 model/api.js 文件、routes/api.js、routes/views/api.js 和 templates/views/api.hbs 并再次使用请求文档中的代码示例,但我什至没能掌握我是什么在我的应用程序中做什么以及所有这些新页面是如何工作的。

我将非常感谢弄清楚如何调用 API 并在其中一个应用程序呈现的视图中显示请求的信息。先感谢您!

4

1 回答 1

0

你可以像这样从你的模型逻辑中访问 api https://github.com/r3dm/shpe-sfba/blob/master/models/Event.js#L69你可以使用 node 的内置 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 回答