我正在创建一个Node JS项目,它以列表的形式在服务器上提取和显示推文。但是,当我在运行main.js之后去查看网页时,它会返回一个' [object Object]'而不是推文。我尝试过使用JSON.stringify,但无济于事。也许我不正确地使用它?
我使用Node.js,Express.js和Pug。
main.js
'use strict';
const express = require('express'),
Twitter = require('twitter'),
passport = require('passport'),
TwitterStrategy = require('passport-twitter').Strategy,
request = require('request'),
app = express(),
tweets = [];
const T = new Twitter({
consumer_key: 'vLHfUa437ECQDnCqbikfpHnxh',
consumer_secret: 'ygZ6HH19vMwm3hGQnSFGKimaBNClzPZUWKoq4TKXqNnOTZPkP4',
access_token_key: '898531406703407108-qkmMO2wAyyXjo8XIG2B59dSlWY6OXZQ',
access_token_secret: 'vBNdwsDeaI8WNQ1gWdtp70keg0EsutgpWNeliD56uj8v6'
});
T.stream('statuses/filter', {track: 'love'}, function(stream){
stream.on('data', function(data){
if ('delete' in data === false){
tweets.push(data);
}
});
setTimeout(function(){
console.log(tweets.length);
}, 1000);
});
app.set('view engine', 'pug');
app.set('views', './views');
app.use(express.json());
app.use(express.urlencoded({
extended: true
}));
app.use(express.static('resources'));
app.get('/', function(req, res) {
res.setHeader("Content-Type", 'text/html');
res.render('index', {tweets: tweets});
});
app.listen(3000, function () {
console.log('Listening on http://localhost:3000');
});
index.pug
doctype
html
head
meta(charset="UTF-8")
meta(name="viewport", content="width=device-width, initial-scale=1")
block title
title This is the title!
link(rel='stylesheet', href='/css/style.css', type='text/css')
body
ul
each tweet in tweets
li= tweet
答案 0 :(得分:-1)
将数据推送到推文数组时,只需检查数据是项目还是对象,如果是对象,则它将打印为 [对象,对象] 。
在推入阵列之前尝试检查数据的键,然后只有你会明白这个想法。
if(数据中的'删除'=== false) ----这里清楚地表明数据是一个对象
答案 1 :(得分:-1)
正如Piyush指出的那样,你正在处理一个物体,需要在拉出弦之前进一步挖掘该物体。
要单独显示每条推文(我假设您正在寻找),只需更改以下内容:
tweets.push(data);
到此......
tweets.push(data.text);
的Bam!现在,您要显示与您的过滤器匹配的每条推文的实际文本字符串。