gpt4 book ai didi

node.js - 如何使用 Node/Express 和 Angular 将 JSON 对象从服务器发送到我的 View

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:52 25 4
gpt4 key购买 nike

我正在尝试构建一个网络应用程序,但我陷入了这部分:我想使用 Contentful 来提供我的数据。由于它是一个 RESTful 服务,我认为它相对容易使用。他们还有一个 Node 模块,让我的生活更加轻松。不幸的是,我无法获取我认为的数据。经过几个小时的谷歌搜索和在这里我想出了这个,但不幸的是它不起作用。

服务器:

var client = contentful.createClient({
accessToken: 'token',
space: 'id',
secure: true,
host: 'cdn.contentful.com'
});

var log = console.log.bind(console);

var movies = client.entries({
'content_type': '207BVEIb7GcYeCumc2Cmk4'
}).then(log, log);

app.get('/api/data/movies', function(req, res) {
res.json(movies);
});

JSON:

[ { sys: 
{ id: '6nEC5yrZwA0YoikiMeQYky',
revision: 1,
type: 'Entry',
locale: 'en-US',
contentType: [Object],
createdAt: Mon Sep 15 2014 22:16:10 GMT+0200 (CEST),
updatedAt: Mon Sep 15 2014 22:16:10 GMT+0200 (CEST),
space: [Object] },
fields: { movieTitle: 'Guardians of the Galaxy' } } ]

我的 Controller :

angular.module('MyApp')
.controller('MainCtrl',['$scope', '$http', function($scope, $http) {
$http.get("/api/data/movies").success(function(data){
$scope.movieTitle = data.movieTitle;
alert(JSON.stringify(data));
});
}]);

我想将 movieTitle 放入我的 View 中,但检索到的数据是这样的:

{"isFulfilled":true,"isRejected":false}

最佳答案

问题出在您的服务器端代码中。本示例代码:

var movies = client.entries({
'content_type': '207BVEIb7GcYeCumc2Cmk4'
}).then(log, log);

正在将一个Promise分配给movies变量。不幸的是,这是对 log 函数结果的 promise ,因此您应该将其更改为:

var movies = client.entries({
'content_type': '207BVEIb7GcYeCumc2Cmk4'
});

下一个问题是,您永远不会对 Promise 调用 then 来获取其解析值。处理这个问题的最简单方法(假设您从不希望刷新电影列表)是在请求处理程序中调用 then :

app.get('/api/data/movies', function(req, res, next) {
movies.then(res.json, next);
});

如果电影 promise 成功解析,这将设置 res.json 运行,并设置 next 来处理任何错误。

如果您希望在每次请求时重新检索电影列表,那么您也可以将 client.entries 调用移至您的请求处理程序中:

app.get('/api/data/movies', function(req, res, next) {
client.entries({
'content_type': '207BVEIb7GcYeCumc2Cmk4'
}).then(res.json, next);
});

最后一点:也可以(并鼓励)直接从浏览器执行这些请求,因此您甚至不需要 Express 应用来代理请求。

关于node.js - 如何使用 Node/Express 和 Angular 将 JSON 对象从服务器发送到我的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25856738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com