gpt4 book ai didi

javascript - 一次批量保存多个模型

转载 作者:数据小太阳 更新时间:2023-10-29 04:16:53 28 4
gpt4 key购买 nike

我知道这个主题已经围绕 stackoverflow 和其他论坛进行了讨论,但我找不到正确的方法。

我有一个名为“post”的模型,其中包含帖子信息(用户、描述等)。用户收到一些帖子,阅读它们并对其进行操作。当我请求 GET /api/posts/

时,帖子来 self 的 api

我还有一个称为“后状态”的模型,我在其中保存阅读帖子的人的操作:当他们喜欢、分享、投票或收藏帖子时。

export default DS.Model.extend({
post: belongsTo('post'),
user: belongsTo('user'),
liked: attr('boolean', { defaultValue: false }),
favourited: attr('boolean', { defaultValue: false }),
voted: attr('boolean', { defaultValue: false }),
shared: attr('boolean', { defaultValue: false }),
});

我正在为我的 ember 应用程序寻找一种方法来批量保存我的后状态模型,就像我批量接收帖子的方式一样。发布状态将通过 api 调用 POST /api/post-states/

保存

我在讨论中读到,最好的方法是创建一个自定义适配器,但我不确定要在其中放入什么才能做到这一点……或许可以创建一个函数 保存所有记录()

什么是最适合我的解决方案?

谢谢你的帮助!

最佳答案

我环顾四周,似乎没有合适的方法可以用 Ember 做到这一点,但我想出了一些我不确定它有多少 Ember Way 的东西。你可以做的是制作一个包含 hasMany 属性的不同模型,该属性将包含你想要批量保存的模型,然后将这些模型添加到容器模型中,你可以使用序列化器/适配器得到你想要的。这是它的工作原理:

模型(我们称之为post-state-container)

import DS from 'ember-data';

export default DS.Model.extend({
postStates: DS.hasMany('post-state')
});

序列化器

import DS from 'ember-data';
import Ember from 'ember';

export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
postStates: { embedded: 'always' },
},
serializeIntoHash: function(data, type, record, options) {
Ember.$.extend(data, this.serialize(record, options));
}
});

您可以在此处调整发送到服务器的有效负载以满足您的后端需求,因为您将从 this 中获得 JSON 格式的序列化 post-state 对象列表。序列化(记录,选项)

适配器

import DS from 'ember-data';

export default DS.RESTAdapter.extend({
namespace: 'api',
urlForCreateRecord: function() {
return this.get('namespace') + '/post-states';
},
});

如何使用它(可能是在某处的路由或 Controller 中执行操作)

  let record1 = this.store.createRecord('post-state'); //These would be your populated records
let record2 = this.store.createRecord('post-state'); //These would be your populated records
let postStateContainer = this.store.createRecord('post-state-container');
postStateContainer.get('post-state-container').pushObject(record1);
postStateContainer.get('post-state-container').pushObject(record2);
postStateContainer.save();

我已经对此进行了测试,并且有效。我不确定是否有更好的方法使用 JSONApi 或类似的方法

关于javascript - 一次批量保存多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35095952/

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