首页 > 解决方案 > 如何对 Firebase 加入的查询进行排序

问题描述

我是firebase的新手,我有一个疑问

const posts = database.child('posts');
const user = database.child('user');

posts.orderByChild("id").on('child_added', snap => {
    let user_id = snap.val().user_id;

    let userRef = database.child('user/' + snap.val().user_id)
userRef.on('value', userSnap => {
        console.log(userSnap.val().name)
        let content = snap.val().content;
        let date_posted = snap.val().date_posted;
        let id = snap.val().id;
        let title = snap.val().title;
        let user_id = snap.val().user_id;
        let user_Name = userSnap.val().name;
        a.push({
            "id": id,
            "title": title,
            "date_posted": date_posted,
            "content": content,
            "user_Name": user_Name,
            "user_id": user_id
        })
    });

});


在输入 UserRef Query 之前,帖子使用 id 进行了很好的排序,但是在第二次查询之后,它不再排序,即使在第二次查询之后,我如何才能使它们排序

这是数据库结构!: 帖子 帖子

我希望输出是这样的

{
    id: 1,
    title: 'My First  Post',
    date_posted: '2018-05-02 19:40:02',
    content: 'This is my firstpost!',
    user_Name: 'Abdelrahman',
    user_id: '8721da2c-0028-430f-a995-0d03c8abb393'
  },
  {
    id: 2,
    title: 'My SecondPost',
    date_posted: '2018-05-02 19:41:02',
    content: 'This is my Second post!',
    user_Name: 'Abdelrahman',
    user_id: '8721da2c-0028-430f-a995-0d03c8abb393'
  },
  {
    id: 3,
    title: 'test Title',
    date_posted: '2021-01-06 08:48:01',
    content: 'test Content',
    user_Name: 'Abdelrahman',
    user_id: '8721da2c-0028-430f-a995-0d03c8abb393'
  },
  {
    id: 4,
    title: 'test Title2',
    date_posted: '2021-01-06 08:49:42',
    content: 'test Content2',
    user_Name: 'Abdelrahman',
    user_id: '8721da2c-0028-430f-a995-0d03c8abb393'
  },
  {
    id: 5,
    title: 'test 3',
    date_posted: '2021-01-06 08:54:14',
    content: 'COntent 3',
    user_Name: 'Abdelrahman',
    user_id: '8721da2c-0028-430f-a995-0d03c8abb393'
  }

但我看到的输出根本没有排序

标签: node.jsfirebasefirebase-realtime-database

解决方案


通常你将令牌作为状态存储在 vuex 中。在您的方法中,您提交突变以设置令牌状态,例如:

 this.$store.commit('SET_TOKEN', res.data)

在商店中,您将拥有

state: {
  token: '',
},
mutations: {
  SET_TOKEN(state, payload) {
  state.token = payload.token
}

这只是一个示例,可根据您获得的响应进行调整。

如果你需要保持你应该使用的状态vuex persisted state


推荐阅读