Обнаружен объект типа «Timestamp», который не соответствует ожидаемому экземпляру - PullRequest
0 голосов
/ 02 октября 2018

Мне интересно, почему объект Timestamp не работает так, как я ожидаю?

Работает в тестовой среде (я использую Mocha), но выдает ошибку при развертывании.

index.ts

import { Timestamp, QuerySnapshot } from "@google-cloud/firestore";
....

async someFunction() {
   let col = firestore.collection("mycollection");
   let now = Timestamp.now();
   let twentyMinsAgo = Timestamp.fromMillis(now.toMillis() - (1200 * 1000));

   return col
      .where('LastEdited', '>=', twentyMinsAgo) //This throws error
      .get()
}

Трассировка стека

Argument "value" is not a valid QueryValue. 
Detected an object of type "Timestamp" that doesn't match the expected instance. 
Please ensure that the Firestore types you are using are from the same NPM package.
      at Validator.(anonymous function).err [as isQueryValue] (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/validate.js:99:27)
      at CollectionReference.where (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/reference.js:940:25)

package.json

"dependencies": {
   ....
   "@google-cloud/firestore": "^0.16.0",
   "firebase-admin": "~6.0.0",
   "firebase-functions": "^2.0.5"
}

1 Ответ

0 голосов
/ 02 октября 2018

Теперь я понял, почему выдает ошибку.Поскольку я импортирую объект Firestore отдельно, тогда как я должен просто использовать объект Firestore из Firebase Admin SDK.

Что я изменил:

  1. удалить "@ google-cloud / firestore"зависимость от package.json

  2. Использовать объект admin.firestore.Timestamp.

index.ts

async someFunction() {
   let col = firestore.collection("mycollection");
   let now = admin.firestore.Timestamp.now();
   let twentyMinsAgo = admin.firestore.Timestamp.fromMillis(now.toMillis() - (1200 * 1000));

   col.where('LastEdited', '>=', twentyMinsAgo) //Now ok
      .get()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...