Node JS 应用仅显示第一个 JSON 对象。为什么?
Node JS app only display the first JSON object. Why?
我正在尝试在我的节点应用程序中编写一个 json 对象,集成 Twilio API。当控制台记录对象时,所有对象都正确返回,但是当我将它写入文档时,只写入第一个对象。为什么?我应该如何更改代码才能看到与控制台日志中相同的书面响应。
var express = require('express');
var app = express();
app.use(express.bodyParser());
app.get('/', function(req, res) {
var accountSid = 'xxx';
var authToken = 'xxx';
var client = require('twilio')(accountSid, authToken);
client.messages.list({
from: "xxx",
to: "xxx"
}, function(err, data) {
data.messages.forEach(function(message) {
console.log(message.body); // THIS WILL DISPLAY ALL OBJECTS
res.json(message.body); // THIS WILL ONLY DISPLAY THE FIRST OBJECT
});
});
});
app.listen(1337);
我是Node JS的新手,觉得这个很容易解决,但我还是找不到解决办法。
res.json 实际上是将数据转换为 JSON。我愿意打赌它没有处理某些事情,或者只是搞砸了。如果 Twilio 的响应已经是 json,您可能不需要这样做。尝试 res.send,而不是 returns 无论你得到什么。
res.json(...);
发回响应。您是在数组的第一次迭代中这样做的,因此客户端只会收到第一条消息。
如果您想从所有消息中提取 body
并将它们全部发回,请执行此操作。用你想要的数据创建一个数组并将它发回。示例:
res.json(data.messages.map(function(message) {
return message.body;
}));
每个请求只能调用一次 res.json
。您在循环中多次调用它。第一次调用它时,浏览器会收到响应,并且所有其他 res.json 调用都会出现 headers already sent
异常(或类似的异常)。
我正在尝试在我的节点应用程序中编写一个 json 对象,集成 Twilio API。当控制台记录对象时,所有对象都正确返回,但是当我将它写入文档时,只写入第一个对象。为什么?我应该如何更改代码才能看到与控制台日志中相同的书面响应。
var express = require('express');
var app = express();
app.use(express.bodyParser());
app.get('/', function(req, res) {
var accountSid = 'xxx';
var authToken = 'xxx';
var client = require('twilio')(accountSid, authToken);
client.messages.list({
from: "xxx",
to: "xxx"
}, function(err, data) {
data.messages.forEach(function(message) {
console.log(message.body); // THIS WILL DISPLAY ALL OBJECTS
res.json(message.body); // THIS WILL ONLY DISPLAY THE FIRST OBJECT
});
});
});
app.listen(1337);
我是Node JS的新手,觉得这个很容易解决,但我还是找不到解决办法。
res.json 实际上是将数据转换为 JSON。我愿意打赌它没有处理某些事情,或者只是搞砸了。如果 Twilio 的响应已经是 json,您可能不需要这样做。尝试 res.send,而不是 returns 无论你得到什么。
res.json(...);
发回响应。您是在数组的第一次迭代中这样做的,因此客户端只会收到第一条消息。
如果您想从所有消息中提取 body
并将它们全部发回,请执行此操作。用你想要的数据创建一个数组并将它发回。示例:
res.json(data.messages.map(function(message) {
return message.body;
}));
每个请求只能调用一次 res.json
。您在循环中多次调用它。第一次调用它时,浏览器会收到响应,并且所有其他 res.json 调用都会出现 headers already sent
异常(或类似的异常)。