需要承诺的Firestore回调函数上的RxJS bindCallback

时间:2018-02-04 22:34:56

标签: firebase rxjs google-cloud-firestore

所以我试图绑定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并且只是正常推迟承诺,它就有效。

0 个答案:

没有答案