Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将解析后的JSON读入数组并不意味着';不行?_Javascript_Node.js_Json_Mongodb_Mongoose - Fatal编程技术网

Javascript 将解析后的JSON读入数组并不意味着';不行?

Javascript 将解析后的JSON读入数组并不意味着';不行?,javascript,node.js,json,mongodb,mongoose,Javascript,Node.js,Json,Mongodb,Mongoose,我已经在一个应用程序上工作了一段时间,这个特殊的功能是一个函数的一部分,它应该将数据从api读取到数组中,这样我就可以在网页上显示内容。现在,我被困在这里。最初,我有一段长得多的代码不起作用,但我将其简化为一个更具体的问题:jsonBody.length返回5,正如预期的那样,但是articles.length返回“未定义”,我不明白为什么 request(options, function(err, request, body) { var jsonBody = JSON.parse(

我已经在一个应用程序上工作了一段时间,这个特殊的功能是一个函数的一部分,它应该将数据从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"
    }
]
[
{
“日期时间”:“2017-06-29T13:14:22-04:00”,
“标题”:“语音搜索技术为营销人员创造了新的范例”,
“来源”:“Benzinga经QuoteMedia”,
“url”:”https://api.iextrading.com/1.0/stock/aapl/article/8348646549980454",
“总结”:“根据Loup Ventu的客座撰稿人Lindsay Boyajian的说法,语音搜索可能会有飞跃式的增长,技术进步会带来更好的采用,并推动增长周期……”,
“相关”:“AAPL、AMZN、GOOG、GOOGL、MSFT”,
“图像”:https://api.iextrading.com/1.0/stock/aapl/news-image/7594023985414148"
}
]

我认为您的问题在于
new Article()
不是数组,但您希望它是数组

就我所见,
文章
是一个猫鼬模式,而不是数组

因此,如果您的
jsonBody
是一个项目数组,那么您可能希望映射到此数组并为列表中的每个对象生成单独的项目

即:


我认为您的问题在于
newarticle()
不是数组,但您希望它是数组

就我所见,
文章
是一个猫鼬模式,而不是数组

因此,如果您的
jsonBody
是一个项目数组,那么您可能希望映射到此数组并为列表中的每个对象生成单独的项目

即:


输出
console.log(articles[0].length)时会发生什么情况?输出
console.log(文章[0].length)时会发生什么情况
  var jsonBody = JSON.parse(body);
  var articles = jsonBody.map(function(data) { 
     return new Article(data);
  })

  console.log(articles.length);