Node JS项目返回' [object Object]'而不是从流中显示推文

时间:2018-05-04 17:04:55

标签: node.js express pug

我正在创建一个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

2 个答案:

答案 0 :(得分:-1)

将数据推送到推文数组时,只需检查数据是项目还是对象,如果是对象,则它将打印为 [对象,对象]

在推入阵列之前尝试检查数据的键,然后只有你会明白这个想法。

  

if(数据中的'删除'=== false) ----这里清楚地表明数据是一个对象

答案 1 :(得分:-1)

正如Piyush指出的那样,你正在处理一个物体,需要在拉出弦之前进一步挖掘该物体。

要单独显示每条推文(我假设您正在寻找),只需更改以下内容:

tweets.push(data);

到此......

tweets.push(data.text);

的Bam!现在,您要显示与您的过滤器匹配的每条推文的实际文本字符串。