我以为我读到您可以使用新的Firebase Firestore查询子集合,但我没有看到任何示例。例如,我有下列方式我公司的FireStore设置:Firestore查询子集合
- 舞蹈[收藏]
- danceName
- 歌曲[收藏]
- SONGNAME
我将如何查询“查找所有歌曲名称=='X'”
我以为我读到您可以使用新的Firebase Firestore查询子集合,但我没有看到任何示例。例如,我有下列方式我公司的FireStore设置:Firestore查询子集合
我将如何查询“查找所有歌曲名称=='X'”
这是一项尚不存在的功能。它被称为“收藏组查询”,并且可以让您查询所有歌曲,而不管哪首歌曲包含它们。这是我们打算支持的东西,但没有具体的时间表。
此时的替代结构是使歌曲成为顶级集合,并使得歌曲跳舞是歌曲属性的一部分。
@ Nelson.b.austin由于公司的FireStore不会有呢,我建议你有一个平坦的结构,意思是:
Dances = {
danceName: 'Dance name 1',
songName_Title1: true,
songName_Title2: true,
songName_Title3: false
}
有它以这种方式,你可以把它做:
var songTitle = 'Title1';
var dances = db.collection("Dances");
var query = dances.where("songName_"+songTitle, "==", true);
我希望这有助于。
如果您将歌曲存储为对象而不是集合,该怎么办?每个起舞,用歌声为现场:Object类型(不是集合)
{
danceName: "My Dance",
songs: {
"aNameOfASong": true,
"aNameOfAnotherSong": true,
}
}
,那么你可以用aNameOfASong所有舞蹈查询:
db.collection('Dances')
.where('songs.aNameOfASong', '==', true)
.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log(doc.id, " => ", doc.data());
});
})
.catch(function(error) {
console.log("Error getting documents: ", error);
});
该解决方案可以工作,但在歌曲数量很大或可以动态增长的情况下不可扩展。这会增加文档大小并影响读/写性能。有关详情,请参阅以下链接的Firebase文档(请参阅页面上的“限制”部分)https://firebase.google.com/docs/firestore/solutions/array –
你会使用从歌曲引用舞firestore参考?你可以通过这些参考查询吗? –
您是否使用Firestore参考取决于您。你可以查询他们。 如果您只想使用参考来查找舞蹈,那么参考就足够了。如果你想能够在一首歌中展示一些关于舞蹈的东西而不用查看舞蹈,那么我就不会使用参考。尽管如此,这是经典的nosql非规范化问题。 –
所以我的问题是我想通过歌名和歌名来查询。一首单曲可以有多首歌曲与之相关联。更进一步,我需要能够评价舞蹈,以及与舞蹈相关的歌曲。例如:歌曲A和歌曲B去舞蹈A.舞蹈A很有趣,5星级 - 但是歌曲A并不适合(投票),但是歌曲B(投票)。所以我一定会利用Firebase函数跟踪两者的平均评分。但我仍然需要能够查询WHERE songName ='X'以及WHERE danceName ='Y'。 Firestore将来能够支持这一点吗? –