所以我试图绑定Firestore函数runTransaction
,它有一个param,这是一个回调 - 一个应该返回一个promise的回调。
我试过这样做:
const fs = firestore();
const runTransaction$ = bindCallback<firestore.Transaction>(fs.runTransaction.bind(fs));
const transaction$ = defer<firestore.Transaction>(() => runTransaction$());
const updateTimestamp = async (transaction: firestore.Transaction) => {
const orderRef = this.orderDb.getDoc(orderUid).ref;
const orderSnap = await transaction.get(orderRef);
t.update(orderRef, { modified: Date.now() });
};
return transaction$
.switchMap(updateTimestamp);
但它不起作用,我不断收到错误:Error: Transaction callback must return a Promise
。但这是一个承诺! async
函数无法返回承诺。此外,如果我不使用bindCallback
并且只是正常推迟承诺,它就有效。