数组在响应中总是为空?"/>
为什么数组在响应中总是为空?
我正在端点上调用以下方法
exports.allConversations = async (req, res) => {
// The recipient of the call, a phone number or a client
console.log(req.body);
let phoneNumber = req.body.phoneNumber;
let messageSent, messageReceived;
try {
let messageSentPromise = client.messages
.list({
from: phoneNumber,
limit: 20
});
let messageReceivedPromise = client.messages
.list({
to: phoneNumber,
limit: 20
});
[messageSent, messageReceived] = await Promise.all([messageSentPromise, messageReceivedPromise]);
let conversations = [];
for (let i = 0; i < messageSent.length; i++) {
let message = messageSent[i];
if (conversations.includes(message.to))
conversations[message.to].push(message);
else {
console.log([].push(message));
conversations[message.to] = [message];
}
}
console.log(conversations);
return res.status(200).send({
conversations: conversations
});
}
catch (error) {
console.log(error);
return res.status(200).json({
success: false
});
}
}
console.log(conversations);在响应中,我始终会收到一个空数组,但以下代码上方的console.log
return res.status(200).send({
conversations: conversations
});
在控制台上打印阵列。
回答如下:我认为问题可能是由于数组索引不是实际的正整数。可能导致异常行为,如下面的代码片段所示:
let result = [];
result["test"]="test";
console.log(result); // depending on the implementation can still log `[test: "test"]` works in firefox for instance
console.log(JSON.stringify(result)); // will always log `[]`
仅确保您的索引实际上是有效的数组索引或使用对象,就像下面的代码中所示
let conversations = {};
for (let i = 0; i < messageSent.length; i++) {
let message = messageSent[i];
if (conversations[message.to]) conversations[message.to].push(message);
else conversations[message.to] = [message];
}
console.log(conversations);
return res.status(200).json({conversations});
更多推荐
为什么数组在响应中总是为空?
发布评论