firebase - 如何在 angularfire 中执行交易?
问题描述
我拥有的代码是它提供了firebase的文档,这是一个简单的增量:
let transaction = this.db.firestore.runTransaction(t => {
return t.get(query)
.then(doc => {
// Add one person to the city population.
// Note: this could be done without a transaction
// by updating the population using FieldValue.increment()
let newPopulation = doc.data().population + 1;
t.update(query, {population: newPopulation});
});
}).then(result => {
console.log('Transaction success!');
}).catch(err => {
console.log('Transaction failure:', err);
});
但是查询不起作用,
“AngularFirestoreDocument<{}>”类型的参数不能分配给“DocumentReference”类型的参数。“AngularFirestoreDocument<{}>”类型中缺少属性“id”。
谢谢你
解决方案
我发现增加原子值的解决方案是
const increment = firebase.firestore.FieldValue.increment(1);
const query = this.db.collection(nameOfCollection).doc(idDoc);
query.update({ valIncrement:increment } )
推荐阅读
- java - 如何通过按钮单击在应用程序图标上设置通知编号?
- reactjs - 基于来自 redux 的另一个 api 响应传递数据
- html - 如何在 javascript 中访问 svg 元素的内部 html 并进行更改?
- webgl - 如何在 webgl 中设置 SharedArrayBuffer 类型的 bufferData?
- c# - MongoDB 作为具有 WriteConcern Majority 和 ReadConcern Linearizable 的锁
- android - 如何在点击而不是长按时移动标记
- android - 当在本机反应中从android模拟器调用API时,显示网络请求的消息失败但不在真实设备中?
- java - java.lang.ClassCastException: com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart 不能转换
- java - 如何防止为某些类创建 java-doc
- neo4j - neo4j 的 CPU 使用率很高,我怎么知道它在做什么?