我已经在应用程序上工作了一段时间,这个特殊功能是该功能的一部分,该功能应该将api中的数据读取到数组中,以便可以在网页上显示内容。现在,我被困在这里。最初,我有一段较长的代码无法正常工作,但我将其缩减为一个更具体的问题:jsonBody.length返回5,正如预期的那样,但是article.length返回“ undefined”,而我没有不明白为什么。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="7dp"
android:layout_marginTop="7.5dp"
android:layout_marginEnd="7dp"
android:layout_marginBottom="7.5dp"
android:background="@drawable/list_background"
android:elevation="5dp"
android:orientation="vertical"
android:paddingBottom="12dp">
<TextView
android:id="@+id/subject_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp"
android:textAllCaps="true"
android:textColor="@color/textColor"
android:textSize="30sp"
tools:text="Name" />
<TextView
android:id="@+id/subject_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="15dp"
android:paddingEnd="5dp"
android:textColor="@color/infoColor"
android:textSize="16sp"
tools:text="Info" />
非常感谢您能帮助我理解。我什至不能完全确定我是否应该使用var文章?我可以找到要打印到控制台的JSON,只是查找是否使用jsonBody,但是如果这样做,我不确定如何利用“新闻”页面上的内容。
这里是扩展代码,以备您查看。
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对象应采用以下格式:
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');
});
});
答案 0 :(得分:3)
我认为您的问题是new Article()
不是数组,但您希望它是一个数组。
据我所知,Article
是猫鼬模式-不是数组。
因此,如果您的jsonBody
是一个文章数组,则可能要映射到该数组并为列表中的每个对象生成单独的文章。
即:
var jsonBody = JSON.parse(body);
var articles = jsonBody.map(function(data) {
return new Article(data);
})
console.log(articles.length);