Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase中基于用户的不同优先级_Firebase - Fatal编程技术网

Firebase中基于用户的不同优先级

Firebase中基于用户的不同优先级,firebase,Firebase,我有如下数据: "-JnbxaJp3rgsIeM2O0EN" : { "Name":"Bill" }, "-yryexaJp3rgsIeM2O0EN" : { "Name":"Jill" }, "-6yrhxaJp3rgsIeM2O0EN" : { "Name":"John" }, "-gn643Jp3rgsIeM2O0EN" : { "Name":"Jack" } users[ { "uid":"simplelo

我有如下数据:

"-JnbxaJp3rgsIeM2O0EN" : {
      "Name":"Bill"
    },
"-yryexaJp3rgsIeM2O0EN" : {
      "Name":"Jill"
    },
"-6yrhxaJp3rgsIeM2O0EN" : {
      "Name":"John"
    },
"-gn643Jp3rgsIeM2O0EN" : {
      "Name":"Jack"
    }
users[
{
"uid":"simplelogin:1",
"nameOrder":[-gn643Jp3rgsIeM2O0EN, -yryexaJp3rgsIeM2O0EN, etc.]
}
];
当用户以id
simplelogin:5
登录时,我希望根据他们的排序首选项对输出进行排序。例如,假设用户
simplelogin:5
之前将其订单设置为
Jack,Jill,Joh,Bill
simplelogin:1
将其订单设置为
Bill,Joh,Jack,Jill

我知道我可以设置优先级,但这是整个数据的优先级,它与用户无关,这是共享数据,每个用户需要自定义优先级

我在考虑建立这样的机构:

"-JnbxaJp3rgsIeM2O0EN" : {
      "Name":"Bill"
    },
"-yryexaJp3rgsIeM2O0EN" : {
      "Name":"Jill"
    },
"-6yrhxaJp3rgsIeM2O0EN" : {
      "Name":"John"
    },
"-gn643Jp3rgsIeM2O0EN" : {
      "Name":"Jack"
    }
users[
{
"uid":"simplelogin:1",
"nameOrder":[-gn643Jp3rgsIeM2O0EN, -yryexaJp3rgsIeM2O0EN, etc.]
}
];

但似乎应该有更好的方法,即使我能够生成这样的列表,我也不确定如何按照
nameOrder
条目中的顺序对输出进行排序。

首先,您需要使用持久的排序id修改主列表。我使用了一个数值,但您可以使用您喜欢的任何值

"-JnbxaJp3rgsIeM2O0EN" : {
  "Name":"Bill",
  nameIndex": 0
},
"-yryexaJp3rgsIeM2O0EN" : {
  "Name":"Jill",
  "nameIndex": 1
},
"-6yrhxaJp3rgsIeM2O0EN" : {
  "Name":"John",
  "nameIndex": 2
},
"-gn643Jp3rgsIeM2O0EN" : {
  "Name":"Jack",
  "nameIndex": 3
}
然后存储用户定义的排序首选项

"simplelogin:1" : {
  "nameOrder": "0,2,3,1"
},
"simplelogin:5" : {
  "nameOrder": "3,1,2,0"
}

现在,当您阅读名称列表时,使用保存在名称中的数组索引来显示结果。

一种解决方案是将每个用户的排序首选项存储在其用户节点下。例如:
/userid/排序首选项/升序
。然后你可以用它来根据他们的喜好排列名字。你能提供你现在用来排序的代码片段吗?我现在根本不排序,我有一个所有名称的jQuery可拖动列表,在可拖动排序完成后,我需要根据用户保持排序的持久性。另一个例子是共享待办事项列表,分享待办事项列表的不同的人会根据自己的个人喜好来安排待办事项,我不确定这是否有意义?