gpt4 book ai didi

javascript - Ember.js - 过滤消息

转载 作者:行者123 更新时间:2023-12-03 06:02:31 26 4
gpt4 key购买 nike

我在/messages 端点上收到以下 JSON 响应:

{
“消息”:[
{
编号: 1,
发件人:2,
接收器: 1,
body:“这是第一条评论”,
创建时间:“2016-09-05 10:00:00”,
更新时间:“2016-09-05 10:00:00”,
用户:2
},
{
编号: 2,
发件人: 1,
接收器:2个,
body: "这是第二条评论",
创建时间:“2016-09-05 11:00:00”,
更新时间:“2016-09-05 11:00:00”,
用户:2
},
{
编号: 3,
发件人: 3,
接收器: 1,
body:“这是第一条评论”,
创建时间:“2016-09-05 12:00:00”,
更新时间:“2016-09-05 12:00:00”,
用户:3
},
{
编号: 4,
发件人: 1,
接收器:3个,
body: "这是第二条评论",
创建时间:“2016-09-05 13:00:00”,
更新时间:“2016-09-05 13:00:00”,
用户:3
},
]
}

这些是当前用户与其他用户的所有消息。 user 属性是当前用户正在与其进行对话的用户,无论是接收还是发送。我需要过滤这些消息并仅获取每个用户的最后一条消息。

在此示例中,我将得到 ID 为 1 和 3 的消息。

接下来,我已经设置了路由 messages/:user_id,当转到此路由时,您可以看到与该特定用户交换的所有消息。

如果进行过滤,我需要服务器端,那么当访问 messages/:user_id 路由时,该用户的所有消息都将加载到存储中。然后,当返回到 messages 时,我会收到之前在商店中加载的所有这些消息。

我已经发布了 Ember Twiddle来帮助说明这一点。

我正在调查 mapByuniq方法并尝试它们但没有成功。

非常感谢任何指示或建议。

最佳答案

我会使用 Controller 模型上的观察者来做到这一点:

export default Ember.Controller.extend({
appName: 'Ember Twiddle',
messages: Ember.computed('model', function () {
return this.get('model').sortBy('created_at').reverse().uniqBy('user');
}),
});

如果您需要使用中间状态,您还可以将计算属性链接在一起:

export default Ember.Controller.extend({
appName: 'Ember Twiddle',
sorting: ['created_at:desc'],
sortedModel: Ember.computed.sort('model', 'sorting'),
uniqModel: Ember.computed.uniqBy('sortedModel', 'user'),
});

您还可以在路由中进行此过滤:

// routes/application.js
export default Ember.Route.extend({
model() {
return messages.sortBy('created_at').reverse().uniqBy('user');
},
});

关于javascript - Ember.js - 过滤消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39697981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com