我想在我的应用中对用户列表(按名称)进行排序。当我与任何用户登录时,该用户将被放在列表顶部。
示例,我的数据如下:
[
{name: "phat 1"},
{name: "phat 3"},
{name: "phat 2"}
]
当我使用“phat 3”登录并执行排序时,结果:
[
{name: "phat 3"},
{name: "phat 1"},
{name: "phat 2"}
]
当我使用“phat 2”登录并执行排序时,结果:
[
{name: "phat 2"},
{name: "phat 1"},
{name: "phat 3"}
]
这是我的代码:
// server
Meteor.publish('users', function (options: Options) {
return Users.find({}, options);
});
// Client
const options: any = {
sort: { 'name': 1}
};
MeteorObservable.subscribe('users', options).subscribe(() => {
let data = Users.find({}).fetch();
});
有人帮助我, 非常感谢!
答案 0 :(得分:0)
您可以按当前记录的ID
对其进行排序Users.find().fetch().sort(function(a, b){
return b._id == Meteor.userId();
});
答案 1 :(得分:0)
我正在阅读这个问题"我想显示按名称排序的用户列表,但始终将当前用户置于顶部。
我确实遇到了这个问题,并以一种非常简单的方式解决了这个问题,避免了任何数组操作(我将用火焰来说明):
HTML:
<template name="userList">
{{#with currentUser}}
{{name}}
{{/with}}
{{#each otherUsers}}
{{name}}
{{/each}}
JS:
Template.userList.helpers({
currentUser(){ return Meteor.user() },
otherUsers(){
return Meteor.users.find({ _id: { $ne: Meteor.userId() }},{ sort: { name: 1 }});
}
});
如果每个用户的布局都很复杂,那么很容易使用嵌套模板来显示每个用户。