我正在使用firebase来管理我的项目,我无法使用where子句创建一个查询,其中某些值不为null.
示例:我有一组员工.每个都有一个设备列表作为对象,其中键是设备ID,值是颜色.
user = {
firstName: 'blabla',
lastName: 'bloblo',
equipments: {
123: 'blue',
124: 'red'
}
}
Run Code Online (Sandbox Code Playgroud)
我想让所有在设备中拥有一定设备的员工.让我们说123.
它来自Employees的Select*,其中equipment.123不为null.我试过了:
firestore.collection('employees').where(`equipments.${equipmentId}`, '!=', null)
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我似乎无法使其发挥作用.你能帮助我吗.
使用Firestore,如何编写查询以查找具有undefined字段的文档?
例如,这是一个带有两个文档的firestore集合:
{
users: { // <- the collection
a: { // <- the document
active: true,
profile: {
first_name: 'Homer',
last_name: 'Simpson',
}
},
b:
active: true
}
}
}
Run Code Online (Sandbox Code Playgroud)
(以下是来自Firestore控制台的屏幕截图): 文档“ a” ,文档“ b”
鉴于上述的Firestore数据,我想执行以下操作:(
firestore().collection('users').where('profile', '==', undefined)这不是对Firestore的有效查询)
如何编写查询以检索不存在users某个字段(profile)的所有文档()?
谢谢!
我在思考如何最好地构建我的(非常简单的)Firestore 应用程序时遇到了一些麻烦。我有一组这样的用户:
users: {
'A123': {
'name':'Adam'
},
'B234': {
'name':'Bella'
},
'C345': {
'name':'Charlie'
}
}
Run Code Online (Sandbox Code Playgroud)
...并且每个用户都可以“喜欢”或“不喜欢”任意数量的其他用户(例如 Tinder)。
我想构建一个“喜欢”表(或 Firestore 等效表),以便我可以列出我还没有喜欢或不喜欢的人。我最初的想法是在用户表中创建一个“喜欢”对象,其布尔值如下所示:
users: {
'A123': {
'name':'Adam',
'likedBy': {
'B234':true,
},
'disLikedBy': {
'C345':true
}
},
'B234': {
'name':'Bella'
},
'C345': {
'name':'Charlie'
}
}
Run Code Online (Sandbox Code Playgroud)
这样,如果我是 Charlie 并且我知道我的 ID,我可以列出我还没有喜欢或不喜欢的用户:
var usersRef = firebase.firestore().collection('users')
.where('likedBy.C345','==',false)
.where('dislikedBy.C345','==',false)
Run Code Online (Sandbox Code Playgroud)
这不起作用(每个人都被列出)所以我怀疑我的方法是错误的,尤其是“==false”部分。有人可以指出我如何构建这个的正确方向吗?作为一个额外的问题,如果有人改变了他们的名字会发生什么?我是否需要更改所有嵌入的“likedBy”数据?或者我可以使用云功能来实现这一点吗?
谢谢!
如何选择没有特定字段的所有文档?我有以下结构:
user = {
firstName: 'blabla',
lastName: 'bloblo',
address: {
city: 'xxxx',
state: 'xxx'
}
}
Run Code Online (Sandbox Code Playgroud)
我曾尝试将其与null进行比较,但未成功。
let db = firebase.firestore();
let querySnapshot = await db
.collection("users")
.where("address", "==", null)
.get();
Run Code Online (Sandbox Code Playgroud)