Yos*_*aya 3 firebase google-cloud-functions firebase-admin google-cloud-firestore
我想知道为什么Timestamp对象无法按预期工作?
它可以在测试环境中工作(我使用Mocha),但是在部署后会引发错误。
索引
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()
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪
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)
Run Code Online (Sandbox Code Playgroud)
package.json
"dependencies": {
....
"@google-cloud/firestore": "^0.16.0",
"firebase-admin": "~6.0.0",
"firebase-functions": "^2.0.5"
}
Run Code Online (Sandbox Code Playgroud)
现在我明白为什么它会引发错误了。因为我是分别导入Firestore对象的,所以我应该只使用Firebase Admin SDK中的Firestore对象。
我改变了什么:
从package.json中删除“ @ google-cloud / firestore”依赖项
使用admin.firestore.Timestamp对象。
索引
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()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
380 次 |
| 最近记录: |