我正在尝试在我的节点应用程序中编写一个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的新手并认为这很容易解决,但我仍然无法找到解决方案。
答案 0 :(得分:1)
res.json(...);
发回回复。你是在数组的第一次迭代中这样做的,因此客户端只获得第一条消息。
如果要从所有邮件中提取body
并将其全部发回,请执行此操作。创建包含所需数据的数组并将其发回。例如:
res.json(data.messages.map(function(message) {
return message.body;
}));
答案 1 :(得分:1)
每个请求只能拨打res.json
一次。你在一个循环中多次调用它。第一次调用它时,浏览器会收到响应,并且您将获得所有其他res.json调用的headers already sent
个例外(或类似的事情)。
答案 2 :(得分:0)
res.json实际上是将数据转换为JSON。我愿意打赌有些东西没有处理,或者它只是搞砸了。如果来自Twilio的响应已经是json,那么您可能不需要这样做。尝试使用res.send,它只返回你得到的任何东西。