【发布时间】:2016-11-30 18:47:55
【问题描述】:
我有一个数据库中的用户列表。在注册 db 时,他们最初获得了 access_token,但随着它过期,我需要通过 refresh_token 创建一个新的 access_token,它也已保存在 db 中针对用户。
我需要向端点发出 POST 请求以获取新的访问令牌。
我正在尝试遍历数据库中的每一行并以这种方式获取新的 access_token。当有一个用户时,它工作得很好,但是当users 数组中有多个用户时,每个user 都是相同的,即数据库表中的最后一个用户。我猜该请求尚未完成,它正在尝试发送新请求或类似的东西。
有谁知道如何解决这个问题?
app.get('/get-users', function (req, res) {
connection.query('SELECT * from users', function(err, rows, fields) {
if(err) console.log(err);
for(var i = 0; i < rows.length; i++) {
name = rows[i].name;
userId = rows[i].userId;
console.log(userId);// this gives the correct userid
var authOptions = {
url: url,
headers: {
'Authorization': 'Basic ' + (new Buffer(client_id + ':' + client_secret).toString('base64'))
},
form: {
grant_type: 'refresh_token',
refresh_token: refresh_token
},
json: true
};
request.post(authOptions, function(error, response, body) {
if (!error && response.statusCode === 200) {
var access_token = body.access_token;
users.push({name: name, userId: userId, accessToken: access_token});
console.log(userId)//gives last entry in db
}
});
setTimeout(function () {
console.log(users)
}, 3000)
}
});
res.send('getting here');
})
【问题讨论】:
-
你在 30 分钟前问过这个问题,它被关闭了:stackoverflow.com/questions/40884069/…
-
@xShirase 我知道,对不起!我想让它首先与一个用户一起工作,因为我不是 100% 确定这是否是问题,但现在我知道它是。正如我所说,问题不在于向浏览器发送响应,而是将正确的数据推送到
users数组中。也感谢您的帮助,我真的很感激 -
我仍然不确定您要做什么。您每次都在一次刷新所有用户令牌?
-
无论如何,摆脱for循环,创建一个处理POST请求的函数,当函数完成时res.send
-
@xShirase 我有一个
refresh_tokens列表,需要更改为access_tokens。这实际上是有效的。我认为问题一定是你对函数所说的,但我不是 100% 确定函数的外观以及它将在 js 文件中调用/转到的位置
标签: javascript node.js spotify