У нас есть штатное приложение, созданное с использованием vuejs и базы данных firestore с более чем 5000 пользователей.Наша задача состоит в том, что нам нужен макет для администраторов для поиска пользователей в базе данных.
Ранее мы загружали всех пользователей в наш макет Users.vue, а затем искали / просматривали их в таблице данных Vuetify.Проблема в том, что у нас просто слишком много пользователей.Этот макет загружается слишком медленно и даже может привести к сбою приложения в мобильных браузерах.
Решение, которое мы пытаемся сделать, - это поиск пользователей в БД и только загрузка этих результатов в нашу таблицу данных.,Приведенный ниже код (с использованием vuex) работает до тех пор, пока «имя» ТОЧНО.
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 предлагает только ==,> =, <=,> и <параметры.И «array-contains» работает только с массивом, а не с нашим «пользовательским» объектом. </p>
On 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, введя только первые несколько букв их имени?