Typescript:在多个(与Firebase相关的)库中查找正确类型时遇到问题
我很难为Firebase找到正确的类型,因为它似乎从大量的库中提取类型。在这方面,从斯帕奇那里学习这个问题可能是个好问题 我正在使用Phpstorm 2019.3,我知道VSCode有更好的打字帮助 方法如下:Typescript:在多个(与Firebase相关的)库中查找正确类型时遇到问题,typescript,firebase,firebase-cli,Typescript,Firebase,Firebase Cli,我很难为Firebase找到正确的类型,因为它似乎从大量的库中提取类型。在这方面,从斯帕奇那里学习这个问题可能是个好问题 我正在使用Phpstorm 2019.3,我知道VSCode有更好的打字帮助 方法如下: protected buildQueryUpToWhereClauseChain(priorQuery: any, whereClauses: WhereDefinition[]): FirebaseFirestore.Query { // = by default. ov
protected buildQueryUpToWhereClauseChain(priorQuery: any, whereClauses: WhereDefinition[]): FirebaseFirestore.Query {
// = by default. overridden if meets condition
let preparedWheresQuery: FirebaseFirestore.Query = priorQuery;
if (whereClauses.length > 0) {
preparedWheresQuery = whereClauses
.reduce((accumulatedQuery, {column, operator, value}) => {
return accumulatedQuery.where(column, operator, value);
}, priorQuery);
}
return preparedWheresQuery;
}
以上扩展类的测试:
import firebase from "firebase";
import * as admin from "firebase-admin";
test('builds .where() query', () => {
const openFirestoreConnection = new OpenFirestoreConnection('testdomain.shopify.com', createTestDatabase(null));
const startingQuery = openFirestoreConnection.database
.collection("collectionName")
.where("storeId", "==", openFirestoreConnection.shopDomain);
const whereClauses: WhereDefinition[] = [{
column: "testColumn"
, operator: '=='
, value: "testValue"
}, {
column: "testColumn2"
, operator: '<='
, value: "testValue2"
}];
const builtQuery = openFirestoreConnection.buildQueryUpToWhereClauseChain(startingQuery, whereClauses);
// admin is from firebase-admin library
// Expected constructor: Query. Received constructor: Query
expect(builtQuery).toBeInstanceOf(admin.firestore.Query);
// this one is from "firebase" library as documented here
// https://firebase.google.com/docs/reference/js/firebase.firestore.CollectionReference.html#where
// https://firebase.google.com/docs/reference/js/firebase.firestore.Query.html
// Expected constructor: PublicConstructor. Received constructor: Query
// expect(builtQuery).toBeInstanceOf(firebase.firestore.Query);
});
人们通常不会将
firebase
和firebase admin
组合在同一代码中。前端web应用通常使用firebase
,后端节点应用通常使用firebase admin
。@DougStevenson这非常有用,我正在努力从项目的这一部分删除firebase
。知道为什么admin.firestore.query
似乎与expect by实例名称匹配,但仍然未能通过测试吗?
// package.json
// dependencies
"firebase": "^7.5.0",
"firebase-admin": "^8.8.0",
"firebase-functions": "^3.3.0",
// devDependencies
"@firebase/firestore-types": "^1.9.0",
"@firebase/testing": "^0.16.6",
"@types/firebase": "^3.2.1",