Javascript lowdb只更新JSON文件中的一个infos
我发出了一个更新JSON文件的lowdb请求,但只更新了日期。当我对要更新的信息创建一个console.log时,这就是我要更新的内容:Javascript lowdb只更新JSON文件中的一个infos,javascript,node.js,express,lowdb,Javascript,Node.js,Express,Lowdb,我发出了一个更新JSON文件的lowdb请求,但只更新了日期。当我对要更新的信息创建一个console.log时,这就是我要更新的内容: res.on("end", function () { let body = Buffer.concat(chunks); let final = JSON.parse(body); if (final.error !== undefined) {
res.on("end", function () {
let body = Buffer.concat(chunks);
let final = JSON.parse(body);
if (final.error !== undefined) {
console.log("Initial authentication:", final.error_description, "Please refresh the authentication grant");
extAuthCallback(84);
} else {
tokens.set('access_token', final.access_token)
.set('expires_in', final.expires_in)
.set('refresh_token', final.refresh_token)
.set('refresh_date', moment())
.write()
console.log(final, tokens.value())
extAuthCallback(1);
}
});
我的最终变量的console.log:
{
access_token: 'oa_prod_iq00cRPk5Jhh4VffSHlDj7DEDsSIlpCRRczI3l3ASC0',
token_type: 'bearer',
expires_in: 2399,
refresh_token: 'oa_prod_nIjBZs74xGvJXi1B-wdMyITfxGyklpCRRczI3l3ASC0'
}
请求后我的JSON文件的console.log:
{
access_token: 'oa_prod_pB9Q0FFM9Tk4c5n3HMRBFKAVz6naiJ-jmb3QCeBrT00',
expires_in: 2399,
refresh_token: 'oa_prod_nX3EDs530SM8eHv_fM5BN7-5RLBwkrKoUi6uExBbTY4',
refresh_date: '2020-11-28T23:31:13.855Z',
primary_autorization_date: '2020-11-29T00:40:58.421Z'
}
修改后的我的JSON文件:
{
"access_token": "oa_prod_pB9Q0FFM9Tk4c5n3HMRBFKAVz6naiJ-jmb3QCeBrT00",
"expires_in": 2399,
"refresh_token": "oa_prod_nX3EDs530SM8eHv_fM5BN7-5RLBwkrKoUi6uExBbTY4",
"refresh_date": "2020-11-28T23:31:13.855Z",
"primary_autorization_date": "2020-11-29T00:40:58.421Z"
}
因此,它只有
主要自动化\u日期
字段更改…您应该使用设置
而不是更新
tokens.set('access_token', final.access_token)
.set('expires_in', final.expires_in)
.set('refresh_token', final.refresh_token)
.set('refresh_date', moment())
.write()
update方法是这样一个函数
db.update('test1', (n) => 5555)
.update('test2', (n) => n + 1)
.write()
如果使用设置
,只需为其赋值即可
db.set('test1', 5555).set('test2', 3333).write()
当您使用矩时,有两种方法可以使用
// Way 1 with moment()
db.set('date', moment()).write()
// Way 2 with moment
db.update('date', moment).write()
因此,解决方案是:
我调用另一个文件中包含HTTP请求的函数,如下所示:
app.get('/', async function(req, res) {
const access_token = req.query.code;
if (access_token) {
let authentication = await asyncExtAuth(access_token);
if (authentication == 84)
return res.send({error: "Please give a valid access_token"});
res.sendFile(path.join(__dirname + '/success_page/index.html'));
db.set('access_token', access_token).write()
tokens.set('primary_autorization_date', moment()).write()
console.log("Access Token successfully refreshed")
}
else
res.send({error: "Please specify an access token"})
})
在其中,我第二次修改文件时使用了tokens.set('primary\u autorization\u date',moment()).write()行。通过这样做,lowdb不考虑之前所做的修改,而是使用之前包含的信息重新修改我的文件。解决方案是在修改文件以更新缓存之前添加行tokens.read()
:
app.get('/', async function(req, res) {
const access_token = req.query.code;
if (access_token) {
let authentication = await asyncExtAuth(access_token);
if (authentication == 84)
return res.send({error: "Please give a valid access_token"});
res.sendFile(path.join(__dirname + '/success_page/index.html'));
db.set('access_token', access_token).write()
tokens.read()
tokens.set('primary_autorization_date', moment()).write()
console.log("Access Token successfully refreshed")
}
else
res.send({error: "Please specify an access token"})
})
所以,是的,一开始我使用的是.set
,但它没有改变JSON文件中的任何内容。当我对tokens.value()
做了一个console.log时,我意识到它被修改了,但是修改没有出现在我的JSON文件中……你把这个文件primary\u autorization\u date
写在哪里?我没有看到任何要设置
或更新
此字段的代码。我找到了解决方案,我在1小时内对其进行了修订。谢谢你的帮助!不客气。