Я пытаюсь сделать пакетную запись с помощью WriteBatch Firestore.Я пытаюсь добавить обновления в WriteBatch, и для этого требуется DocumentReference.У меня есть AngularFirestoreDocument и я не могу понять, как привести его к DocumentReference и заставить его скомпилировать или запустить правильно.
Я пытался привести его к любому неизвестному объекту DocumentReference и использовать AngularFirestoreDocument как есть.
export class FinancialService {
private transCollection: AngularFirestoreCollection<Transaction>;
batch_update_trans(trans) {
let writer = this.afs.firestore.batch();
this.transCollection = this.afs.collection<Transaction>('balance_sheets/'+this.balance_sheet_id+"/transactions/");
for (let t of trans) {
writer.update(this.transCollection.doc(id),t);
}
return writer.commit();
}
}
, если я включаю AngularFirestoreDocument, как указано выше, я получаю время компиляцииошибка: ошибка TS2345: Аргумент типа «AngularFirestoreDocument <{}>» не может быть назначен параметру типа «DocumentReference».Типу AngularFirestoreDocument <{}> 'не хватает следующих свойств из типа «DocumentReference»: id, firestore, parent, path и еще 2.
Если я приведу AngularFirestoreDocument к DocumentReference: writer.update(<DocumentReference>this.transCollection.doc(id),t);
Я получаю эту ошибку времени компиляции: ошибка TS2352: преобразование типа 'AngularFirestoreDocument <{}>' в тип "DocumentReference" может быть ошибкой, поскольку ни один тип не совпадает в достаточной степени с другим.Если это было сделано намеренно, сначала преобразуйте выражение в «неизвестное».Типу AngularFirestoreDocument <{}> 'не хватает следующих свойств из типа «DocumentReference»: id, firestore, parent, path и еще 2
Если я приведу AngularFirestoreDocument к DocumentReference к unknown: writer.update(<unknown> this.transCollection.doc(id),t);
Он не скомпилируется с этой ошибкой: ошибка TS2345: Аргумент типа «неизвестно» не может быть назначен параметру типа «DocumentReference».
Если я приведу AngularFirestoreDocument к DocumentReference к любому: writer.update(<any> this.transCollection.doc(id),t);
, он делаеткомпилируется, но я получаю ошибку времени выполнения, когда пытаюсь перейти на пакетное обновление документов следующим образом: Uncaught (в обещании): FirebaseError: [code = invalid-аргумент]: функция WriteBatch.update () требует, чтобы ее первый аргумент был DocumentReference, ноэто было: объект FirebaseError: Функция WriteBatch.update () требует, чтобы его первый аргумент был DocumentReference, но это был: объект
Я ожидал, что код скомпилируется и успешно выполнит пакетное обновление документов транзакций.