【发布时间】:2018-10-18 17:19:05
【问题描述】:
我拥有的是一个在调用时重置 ref 的函数。仅更新一个参考时有效。
这是该部分功能的代码:
if (streakVal !== 0) {
//reset
const uid = item.child('uid').val();
ref.child(uid).update({ streak: 0 }).catch(err => {
res.status(500).send(err);
});
}
我还想更新数据库不同部分中的另一个引用。我已经将它包含在同一个函数中,因为唯一的区别是 ref 位置。该部分看起来像这样:
if (streakVal !== 0) {
//reset
const uid = item.child('uid').val();
ref.child(uid).update({ streak: 0 }).then(() => {
boardRef.child(uid).update({ score: 0 }).catch(err => {
res.status(500).send(err);
});
}).catch(err => {
res.status(500).send(err);
});
}
第一个 sn-p 有效。但是,第二个导致错误Function execution took 800 ms, finished with status code: 304 我想知道这是为什么以及如何解决它。也许我没有正确构建它,因为我是 Node.js 的新手。我确信这是两个裁判的正确路径。这是完整的功能:
export const resetStreak = functions.https.onRequest((req, res) => {
const ref = db.ref('users');
const boardRef = db.ref('streakLeaderboard');
ref.once('value').then(snap => {
snap.forEach(item => {
const streakVal = item.child('streak').val();
const lastQuestTimestamp = item.child('lastQuest').val();
const today = new Date();
const d = new Date(lastQuestTimestamp);
if (sameDay(today, d) === false) {
if (streakVal !== 0) {
//reset
const uid = item.child('uid').val();
ref.child(uid).update({ streak: 0 }).then(() => {
boardRef.child(uid).update({ score: 0 }).catch(err => {
res.status(500).send(err);
});
}).catch(err => {
res.status(500).send(err);
});
}
}
})
}).catch(err => {
res.status(500).send(err);
});
谢谢!
【问题讨论】:
标签: node.js firebase google-cloud-functions