我正在尝试从firebase的邮件表中获取数据,该邮件表的列为“ email”,而email等于“ x@gmail.com”和“ y@gmail.com”。如果电子邮件等于两者中的任何一个,我需要获取数据,但是我正在使用的查询似乎是错误的。
还需要根据有效的时间对消息进行排序。
var ref = db.collection('messages').orderBy('timestamp','desc')
var ref2 = ref.orderByChild('email').equalTo('x@gmail.com','y@gmail.com')
ref2.onSnapshot(snapshot => {setMessages(snapshot.docs.map(doc => ({id: doc.id, message : doc.data()})))});
答案 0 :(得分:0)
假设您使用的是Firestore,那么您想要的是一个IN
查询。这样,您最多可以指定10个电子邮件地址:
db.collection('messages')
.orderBy('timestamp','desc')
.where('email', 'in', ['x@gmail.com','y@gmail.com'])
有关更多信息,请参见in, not-in, and array-contains-any conditions上的Firestore文档。