【发布时间】:2021-06-09 02:49:05
【问题描述】:
存在关于如何更新 Firebase 记录的嵌套属性的问题,但没有关于如何使用嵌套属性创建记录的答案。
在网络上,目标是创建具有嵌套属性的 Firebase 记录。
使用点表示法适用于更新,但在重复使用相同的键创建记录时不会创建嵌套层次结构。
这是有道理的,因为密钥不会传递有关子属性数据类型的任何信息。
创建具有嵌套属性的对象的正确方法是什么?
async test(serviceId, numCredits, emailAddress) {
// Set credits key.
let creditsKey = `credits.${serviceId}.numAllowed`;
try {
// Get user matching @emailAddress.
let user = await this.getUser(emailAddress);
// New user? Create database record.
if (!user) {
this.db_
.collection('users')
.add(
{
emailAddress: emailAddress,
[{creditsKey}]: numCredits
}
);
// Nope, user exists so update his/her record.
} else {
// Set update query.
let query = this.db_
.collection('users')
.where('emailAddress', '==', emailAddress);
// Run update query.
const querySnapshot = await query.get();
return querySnapshot.docs[0].ref.update({
[creditsKey]: firebase.firestore.FieldValue.increment(numCredits)
});
}
} catch(e) {
debug('Error in test(): ' + e);
}
}
【问题讨论】:
标签: javascript firebase web google-cloud-firestore