javascript - 将解析的 JSON 读入数组不起作用?
问题描述
我已经在一个应用程序上工作了一段时间,这个特殊功能是一个函数的一部分,它应该从一个 api 读取数据到一个数组中,以便我可以在网页上显示内容。现在,我被困在这里。最初,我有一段更长的代码无法正常工作,但我已将其缩减为更具体的问题:jsonBody.length 按预期返回 5,但articles.length 返回“未定义”而我没有不明白为什么。
request(options, function(err, request, body) {
var jsonBody = JSON.parse(body);
var articles = new Article(jsonBody);
console.log(jsonBody.length);
console.log(articles.length);
res.render('news');
});
如果您能帮助我理解,非常感谢。我什至不完全确定我应该使用 var 文章吗?如果我使用 jsonBody,我可以让 JSON 打印到控制台,但如果我这样做,我不确定如何利用我的“新闻”页面上的内容。
这是您想查看的扩展代码。
var marketNewsSchema = new mongoose.Schema({
datetime: String,
headline: String,
source: String,
url: String,
summary: String,
related: String,
Image: String
});
var Article = mongoose.model('MarketNews', marketNewsSchema);
app.get('/api/marketNews', function(req, res) {
var query = {
'symbol': req.body.id
};
var options = {
url: 'https://api.iextrading.com/1.0/stock/aapl/news/last/5',
method: 'GET',
qs: query
};
request(options, function(err, request, body) {
var jsonBody = JSON.parse(body);
var articles = new Article(jsonBody);
console.log(jsonBody.length);
console.log(articles.length);
res.render('news');
});
});
原始 JSON 对象应采用以下格式:
[
{
"datetime": "2017-06-29T13:14:22-04:00",
"headline": "Voice Search Technology Creates A New Paradigm For Marketers",
"source": "Benzinga via QuoteMedia",
"url": "https://api.iextrading.com/1.0/stock/aapl/article/8348646549980454",
"summary": "<p>Voice search is likely to grow by leap and bounds, with technological advancements leading to better adoption and fueling the growth cycle, according to Lindsay Boyajian, <a href=\"http://loupventures.com/how-the-future-of-voice-search-affects-marketers-today/\">a guest contributor at Loup Ventu...",
"related": "AAPL,AMZN,GOOG,GOOGL,MSFT",
"image": "https://api.iextrading.com/1.0/stock/aapl/news-image/7594023985414148"
}
]
解决方案
我认为你的问题是它new Article()
不是一个数组,但你希望它是一个。
据我所知,Article
是一个猫鼬模式 - 不是一个数组。
因此,如果您jsonBody
是文章数组,您可能希望映射此数组并为列表中的每个对象生成单独的文章。
IE:
var jsonBody = JSON.parse(body);
var articles = jsonBody.map(function(data) {
return new Article(data);
})
console.log(articles.length);
推荐阅读
- ios - RxSwift 分页 tableView 靠近底部
- doctrine - Composer 安装的 PHPUnit 二进制文件使用系统提供的 ResultPrinter 并失败
- javascript - 收到二维码
. 如何使用此代码连接到 whatsapp 网络?whatsapp-web.js - keyboard - 如果我使用“--vh”技巧设置 viewheight,则在移动浏览器中为虚拟键盘设置 height 为 innerheight 不起作用
- react-native - 如何使用 @testing-library/react-native 和 jest 测试 react-native-qrcode-scanner
- go - 升级后goroutines数量突然增加
- java - 如何在spring boot批处理中写入与输入文件相同的输出文件
- python - 使用 pyplot 手动绘制决策树
- python-3.x - 我正在尝试使用 Python 创建一个简单的文本扩展器
- reactjs - 当我点击 X 按钮时,React 和 Styled 组件中没有播放动画