gpt4 book ai didi

angularfire2 增加值(value)的最佳方式?

转载 作者:太空狗 更新时间:2023-10-29 17:29:57 25 4
gpt4 key购买 nike

我在很多论坛上搜索过,问题,在doc但找不到正确的解决方案。

问题

使用 angularfire2 增加值的最佳方法是什么?
我看到我们可以使用 [transaction()][] 但它实际上不适用于 angularfire2。还是带快照?

用户服务.ts

incrementLike(userToIncrementLike){
this.af.database.object('users/' + userToIncrementLike.uid).subscribe((userObject) => {
var newUser = {
likes: userObject.likes + 1
};

});
this.af.database.object('users/' + userToIncrementLike.uid).update(newUser);

}

我也这样试过:

incrementLike(userToIncrementLike){

let obs = this.af.database.object('users/' + userToIncrementLike.uid);
obs.subscribe((snapshot) => {
let newValue = (snapshot.$value) ? (snapshot.$value + 1) : 1;
obs.set(newValue);
});
}

非常感谢您的帮助和提示:)路易斯。

最佳答案

Firestore 现在有 increment() 可以正确地递增一个字段,即使多个用户同时竞争编辑也是如此

Incrementing Values Atomically with Cloud Firestore

在angularfire2中使用它

import { firestore } from 'firebase/app';

incrementLike(userToIncrementLike) {
const increment = firestore.FieldValue.increment(1);
const userLike = this.af.doc(`users/${userToIncrementLike.uid}`);
userLike.update({ likes: increment });
}

因为在angularfire2中找不到FieldValue,所以直接用firestore

关于angularfire2 增加值(value)的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42596866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com