-1

我想知道如何在 response.json() 中返回一个新的对象数组,以便在失眠时可见。

我从 API 接收各种信息,目标是仅返回我创建的 response.json () 中的对象数组到我的前端。

所以我想将它们存储在一个变量中。

这是代码:

    var T = new Twit({
        consumer_key: process.env.CONSUMER_K,
        consumer_secret: process.env.CONSUMER_S,
        access_token: process.env.ACCESS_T,
        access_token_secret: process.env.ACCESS_T_S,
        timeout_ms: 60 * 1000,
        strictSSL: true,
})

app.get('/teste', (request, response) => {

let obj = {};
let obj2 = {};

    T.get('https://******.com/1.1/statuses/user_timeline.json?screen_name=******=1', (err, data, response) => {

        data.map(item => {
            obj.name = item.user.name;
            obj.texto = item.text;
            obj.profileImage = item.user.profile_image_url;
        });
    });
    T.get('https://******.com/1.1/statuses/user_timeline.json?screen_name=u*******=1', (err, data, response) => {
    
        data.map(item => {
            obj2.name2 = item.user.name;
            obj2.texto2 = item.text;
            obj2.profileImage2 = item.user.profile_image_url;
        });
    
    });   

    setTimeout(() => {
      return response.json([obj, obj2]);
    }, 1000);
    
});

在负责我的人的帮助下,能够返回一个更干净的 json,但现在我想知道如何实现 aync / await 来代替“setTimeout()”,因为该函数在使用时只返回一个数组"setTimeout()" 的 "dalay"。

谢谢!

4

2 回答 2

0

问题是您的数组变量不在路由函数中,使其成为全局变量,这意味着即使您创建新的 GET 请求,也会存储以前的数组值。因此,您可以在路由函数中添加数组变量,也可以在发出 GET 请求后立即清空数组。

一个例子:

  var T = new Twit({
            consumer_key: process.env.CONSUMER_K,
            consumer_secret: process.env.CONSUMER_S,
            access_token: process.env.ACCESS_T,
            access_token_secret: process.env.ACCESS_T_S,
            timeout_ms: 60 * 1000,
            strictSSL: true,
    })
    
    app.get('/teste', (request, response) => {
        var obj = {};
        T.get('https://******.com/1.1/statuses/user_timeline.json?screen_name=******=1', (err, data, response) => {
    
            data.map(item => {
                obj.name = item.user.name, 
                obj.texto = item.text 
                obj.profileImage = item.user.profile_image_url
            });
    
        });
        T.get('https://******.com/1.1/statuses/user_timeline.json?screen_name=u*******=1', (err, data, response) => {
        
            data.map(item => {
                obj.name2 = item.user.name, 
                obj.texto2 = item.text 
                obj.profileImage2 = item.user.profile_image_url
            });
        
        });    
    
        return response.json([obj]);
    });
于 2020-12-17T13:39:31.380 回答
0

而不是每次都推送一个新对象,只需创建和清空对象并在同一个对象上分配值。

var T = new Twit({
        consumer_key: process.env.CONSUMER_K,
        consumer_secret: process.env.CONSUMER_S,
        access_token: process.env.ACCESS_T,
        access_token_secret: process.env.ACCESS_T_S,
        timeout_ms: 60 * 1000,
        strictSSL: true,
})

app.get('/teste', (request, response) => {
    let arr0 = []
    T.get('https://******.com/1.1/statuses/user_timeline.json?screen_name=******=1', (err, data, response) => {

        data.map(item => {
            const temp = {
                profileImage: item.user.profile_image_url,
                name: item.user.name,
                texto: item.text,
            };
            arr0.push(temp);
        });
    });
    T.get('https://******.com/1.1/statuses/user_timeline.json?screen_name=u*******=1', (err, data, response) => {
    
        data.map(item => {
            const temp = {
                profileImage2: item.user.profile_image_url,
                name2: item.user.name,
                texto2: item.text,
            };
            arr0.push(temp);
        });    
    });
    
    return response.json([temp]);
});
于 2020-12-17T13:47:47.303 回答