【发布时间】:2019-07-15 21:09:53
【问题描述】:
我们有一个人员配置应用程序,使用 vuejs 和一个拥有 5,000 多个用户的 firestore 数据库构建。我们面临的挑战是我们需要一个布局供管理员在数据库中搜索用户。
以前,我们在 Users.vue 布局中加载所有用户,然后在 Vuetify 数据表中搜索/查看他们。现在的问题是我们的用户太多了。该布局加载速度太慢,甚至会导致应用在移动浏览器上崩溃。
我们正在尝试的解决方案是在数据库中搜索用户,然后仅将这些结果加载到我们的数据表中。下面的代码(使用 vuex)可以工作,只要“名称”是 EXACT。
getUsersState({commit}, payload){
fb.usersCollection.where("name", "==", payload.search).limit(10).onSnapshot(querySnapshot => {
let usersArray = []
console.log(payload.search)
querySnapshot.forEach(doc => {
let user = doc.data()
user.id = doc.id
usersArray.push(user)
})
commit('setUsers', usersArray)
})
},
问题在于,即使我们只输入姓名的前几个字母,甚至是电子邮件地址,我们也需要它来工作。 Firestore 仅提供 ==、>=、 和
在 Users.vue 上:
created () {
console.log('getting users')
this.$store.dispatch("getUsersState", {search: this.search})
},
computed: {
...mapState(['currentUser', 'users', 'userProfile']),
isAdmin: function() {
return this.userProfile.accessLevel >= 5
},
isUsers: function() {
return this.users
}
},
watch: {
search: 'updateSearch'
},
methods: {
clearSearch () {
return this.isSearch = ''
},
updateSearch() {
this.$store.dispatch("getUsersState", {search: this.search})
},
},
是否有人对我们如何通过仅输入用户姓名的前几个字母来搜索 Firestore 数据库中的用户有任何想法?
【问题讨论】:
标签: javascript firebase vue.js google-cloud-firestore vuetify.js