数据深度查询
Deep querying of data
是否可以将 "deep query" 数据存储在 Baqend 中?
像这样:
db.Shifts.find()
.where({
"applicants.applicants": { "$in": ["db/User/12"] },
})
applicants.applicants是对保存在不同数据中的Set的引用class。
在没有过滤器的情况下,数据的形状如下:
Array [
Object {
"id": "/db/Shifts/123",
"applicants": Object {
"applicants": Array [
"/db/User/12",
"/db/User/13",
],
},
Object {
"id": "/db/Shifts/456",
"applicants": Object {
"applicants": Array [
"/db/User/12",
"/db/User/14",
],
},
Object {
"id": "/db/Shifts/789",
"applicants": Object {
"applicants": Array [
"/db/User/13",
"/db/User/14",
],
},
]
所以在这种情况下,我正在尝试进行查询,该查询将 return 仅移动 123 和 456,因为它们都有用户 12。这是否可能,或者我们是否需要在之后使用 Ramda 对其进行过滤我们在客户端取回数据?
仅当 applicants
存储在 Shifts
对象中时才可能进行深度查询。 Here 实际上是我们指南中这种深度查询的示例,我们在其中按 activities.start
.
进行过滤
您的查询应如下所示:
db.Shifts.find()
.in('applicants.applicants', "/db/User/12")
.resultList()
.then(shifts => ...)
如果您愿意,还可以一次搜索多个用户。像这样简单地工作:
db.Shifts.find()
.in('applicants.applicants', "/db/User/12", "/db/User/13", "/db/User/14")
.resultList()
.then(shifts => ...)
这将 return 所有用户 12、13 或 14 之一是申请人的班次。
如果您的应用程序将申请人存储在不同的 class(例如 Applicant
class)并且仅在 Shifts
class,你需要先这样查询Applicants对象:
db.Applicants.find()
.in('applicants', "/db/User/12")
.resultList()
.then(applicantObjects => ...)
有了这些,您就可以像这样查询 Shifts
db.Shifts.find()
.in('applicants', applicantObjects.map(it => it.id))
.resultList()
.then(shifts => ...)
希望对您有所帮助 ;)
是否可以将 "deep query" 数据存储在 Baqend 中?
像这样:
db.Shifts.find()
.where({
"applicants.applicants": { "$in": ["db/User/12"] },
})
applicants.applicants是对保存在不同数据中的Set的引用class。
在没有过滤器的情况下,数据的形状如下:
Array [
Object {
"id": "/db/Shifts/123",
"applicants": Object {
"applicants": Array [
"/db/User/12",
"/db/User/13",
],
},
Object {
"id": "/db/Shifts/456",
"applicants": Object {
"applicants": Array [
"/db/User/12",
"/db/User/14",
],
},
Object {
"id": "/db/Shifts/789",
"applicants": Object {
"applicants": Array [
"/db/User/13",
"/db/User/14",
],
},
]
所以在这种情况下,我正在尝试进行查询,该查询将 return 仅移动 123 和 456,因为它们都有用户 12。这是否可能,或者我们是否需要在之后使用 Ramda 对其进行过滤我们在客户端取回数据?
仅当 applicants
存储在 Shifts
对象中时才可能进行深度查询。 Here 实际上是我们指南中这种深度查询的示例,我们在其中按 activities.start
.
您的查询应如下所示:
db.Shifts.find()
.in('applicants.applicants', "/db/User/12")
.resultList()
.then(shifts => ...)
如果您愿意,还可以一次搜索多个用户。像这样简单地工作:
db.Shifts.find()
.in('applicants.applicants', "/db/User/12", "/db/User/13", "/db/User/14")
.resultList()
.then(shifts => ...)
这将 return 所有用户 12、13 或 14 之一是申请人的班次。
如果您的应用程序将申请人存储在不同的 class(例如 Applicant
class)并且仅在 Shifts
class,你需要先这样查询Applicants对象:
db.Applicants.find()
.in('applicants', "/db/User/12")
.resultList()
.then(applicantObjects => ...)
有了这些,您就可以像这样查询 Shifts
db.Shifts.find()
.in('applicants', applicantObjects.map(it => it.id))
.resultList()
.then(shifts => ...)
希望对您有所帮助 ;)