Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript:在多个(与Firebase相关的)库中查找正确类型时遇到问题_Typescript_Firebase_Firebase Cli - Fatal编程技术网

Typescript:在多个(与Firebase相关的)库中查找正确类型时遇到问题

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

我很难为Firebase找到正确的类型,因为它似乎从大量的库中提取类型。在这方面,从斯帕奇那里学习这个问题可能是个好问题

我正在使用Phpstorm 2019.3,我知道VSCode有更好的打字帮助

方法如下:

  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",