Error passing queryconstraint in a function call
- 主要言語
- TypeScript
- スター
- 7.8k
- フォーク
- 2.2k
- 平均マージ
- 22時間 28分
- マージ済み PR(30日)
- 6
説明
### Version info
**Angular:**
"@angular/core": "^14.0.2",
**Firebase:**
Firebase 9
**AngularFire:**
"^7.4.1"
"rxjs": "~7.4.0",
**Other (e.g. Ionic/Cordova, Node, browser, operating system):**
### How to reproduce these conditions
**Failing test unit, Stackblitz demonstrating the problem**
const constraints1 =[];
constraints1.push(where('read', '==', false));
constraints1.push(orderBy('createdAt', 'desc'));
constraints1.push(limit(1));
dataQuery = query(colRef, ...constraints1);
console.log on constraints1
Constraints1:::[{"fa":{"segments":["read"],"offset":0,"len":1},"da":"==","_a":false,"type":"where"},{"fa":{"segments":["createdAt"],"offset":0,"len":1},"wa":"desc","type":"orderBy"},{"type":"limit","ma":1,"ga":"F"}]
This works fine but passing these constraints to a function
export interface FirestoreQuery{
[x: string]: any;
property:string;
value:any;};
async collectionPA(
ref: CollectionPredicate,
options : FirestoreQuery[]
): Promise {
let wherelist:FirestoreQuery[] = options.filter(x => x.property === 'where');
let orderByList:FirestoreQuery[] = options.filter(x => x.property === 'orderBy');
let limitList:FirestoreQuery[] = options.filter(x => x.property === 'limit');
if (wherelist instanceof Array) {
for (let w of wherelist) {
constraints.push(w.value);
}
}
if (orderByList[0] instanceof Array) {
// It's an array of array
for (let o of orderByList) {
constraints.push(o.value);
}
**dataQuery = query(colRef, ...constraints);**
}
_Console.log on constraints has the following data..._
Constraints:::["where('read', '==', false)","limit(3)"]
The line give an error
ERROR TypeError: n._apply is not a function
at Uh (index.esm2017.js:18542:30)
at angular-fire.js:227:48
at angular-fire.js:160:59
at _ZoneDelegate.invoke (zone.js:372:26)
at Zone.run (zone.js:134:43)
at NgZone.runOutsideAngular (core.mjs:26414:28)
at runOutsideAngular (angular-fire.js:160:35)
at angular-fire.js:227:21
at firebasehelper.service.ts:202:22
at Generator.next ()
**Steps to set up and reproduce**
**Sample data and security rules**
let options : FirestoreQuery[] =[];
options = [
{property:"where", value: "where('read', '==', false)"},
{property:"orderBy",value:"OrderBy('createdAt', 'desc')"},
{property:"limit", value:"limit(3)"},
];
const promiseNotify: Observable = fromPromise(this._firebasehelperService.collectionPA('notifications',options));
### Debug output
** Errors in the JavaScript console **
** Output from `firebase.database().enableLogging(true);` **
** Screenshots **

### Expected behavior
### Actual behavior
コントリビューションガイド
調査の方向性
報告された呼び出しは firebasehelper.service.ts:202 にあります。示されているオプションを使用して Angular 14、Firebase 9、AngularFire 7.4.1 で再現してください。query(colRef, ...constraints) と直接的な constraints1 の例を比較し、どの値が呼び出しに到達するかを確認してください。明確な期待値と実際の結果を示す、最小限の確認済み再現ができれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- angular, firebase, typescript
- 領域
- database
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100