(Использование машинописи для лучшей читабельности. Ваниль js всегда приветствуется)
Nodejs Приложение, использующее следующие импорта:
import { FieldPath, DocumentReference } from '@google-cloud/firestore';
и это функция
async getByIds(ids: DocumentReference[]) {
const collection = this.db.client.collection('authors');
const query = await collection.where(FieldPath.documentId(), 'in', ids).get();
return query.docs.map(d => ({ id: d.id, ...d.data() }));
}
возвращает именно эту ошибку c:
The corresponding value for FieldPath.documentId() must be a string or a DocumentReference.
Отладчик подтверждает, что идентификаторы фактически являются массивом DocumentReference.
Может быть, пакет @google-cloud/firestore
не выровнен с пакетом Firebase?
РЕДАКТИРОВАТЬ: , как отметил Дуг в своем комментарии, я забыл поставить код для this.db.client
. Вот вам:
export class DatabaseProvider {
private _db: Firestore;
get client(): Firestore {
return this._db;
}
constructor() {
this._db = new Firestore({
projectId: ...,
keyFilename: ...
});
}
}
И используется как
const db = new DatabaseProvider();