Javascript Firebase实时数据库深度查询返回null

Javascript Firebase实时数据库深度查询返回null,javascript,firebase,firebase-realtime-database,ionic3,angularfire2,Javascript,Firebase,Firebase Realtime Database,Ionic3,Angularfire2,我的结构如下: 我有一个profileId,我想检索包含该profileId的所有项目 这是我的代码: var campaignRef = this.db.app.database().ref('Campaign'); var projectsRef = campaignRef.child('Projects'); var projects = projectsRef.orderByChild('profileId').equalTo(userId).once("value", (snap)

我的结构如下:

我有一个profileId,我想检索包含该profileId的所有项目

这是我的代码:

var campaignRef = this.db.app.database().ref('Campaign');
var projectsRef = campaignRef.child('Projects');

var projects = projectsRef.orderByChild('profileId').equalTo(userId).once("value", (snap) => {
  console.log(snap.val());
});
“用户ID”有效且存在,但 我只是得到零

我如何返回包含这些项目的“FirebaseListObservable”列表。。(或它们的快照)


谢谢

看看这个,我不认为您可以查询以下两个autoId,所以您可能需要重新设计您的数据结构。您将projectRef作为Campaign->Projects,但它们之间有一个autoId,所以我认为这是您的问题。您可以使用orderby在autoID下面查询。然而,在您的情况下,您将低于两个id,我不确定这是否可能。正如@DoesData所说,这种类型的查询是不可能的。您需要对数据进行非规范化处理。举个例子,请看我的回答:好吧,那么。。既然没用,我只好相信你的话。但是,否则你会怎么做呢?…为什么你会在下面有一个自动识别码?你不知道竞选活动的名称吗?如果您这样做了,那么您可以将该名称附加到查询中并获得所需的结果。否则,您需要重新构造数据。像将项目拉到自己的树中这样的东西可能对你有用。如果不知道您的具体使用情况,就很难提供直接建议。活动的名称不是唯一的。“类似于将项目拉到自己的树中可能对你有用”-这就是我所做的。。。谢谢你的帮助!看看这个,我不认为您可以查询以下两个autoId,所以您可能需要重新设计您的数据结构。您将projectRef作为Campaign->Projects,但它们之间有一个autoId,所以我认为这是您的问题。您可以使用orderby在autoID下面查询。然而,在您的情况下,您将低于两个id,我不确定这是否可能。正如@DoesData所说,这种类型的查询是不可能的。您需要对数据进行非规范化处理。举个例子,请看我的回答:好吧,那么。。既然没用,我只好相信你的话。但是,否则你会怎么做呢?…为什么你会在下面有一个自动识别码?你不知道竞选活动的名称吗?如果您这样做了,那么您可以将该名称附加到查询中并获得所需的结果。否则,您需要重新构造数据。像将项目拉到自己的树中这样的东西可能对你有用。如果不知道您的具体使用情况,就很难提供直接建议。活动的名称不是唯一的。“类似于将项目拉到自己的树中可能对你有用”-这就是我所做的。。。谢谢你的帮助!