gpt4 book ai didi

ember.js - Ember 数据嵌套资源 URL

转载 作者:行者123 更新时间:2023-12-04 19:14:22 25 4
gpt4 key购买 nike

假设我有一个具有以下布局的 Rails 应用程序(从我的实际项目中稍微简化了这一点):

User
has many Notes

Category
has many Notes

Note
belongs to User
belongs to Category

笔记可以在以下位置获得:
/users/:user_id/notes.json
/categories/:category_id/notes.json

但不是:
/notes.json

整个系统中有太多注释无法在一个请求中发送 - 唯一可行的方法是仅发送必要的注释(即属于用户或用户试图查看的类别的注释)。

我使用 Ember Data 实现这一点的最佳方式是什么?

最佳答案

我想说的很简单:

Ember 型号

App.User = DS.Model.extend({
name: DS.attr('string'),
notes: DS.hasMany('App.Note')
});

App.Category = DS.Model.extend({
name: DS.attr('string'),
notes: DS.hasMany('App.Note')
});

App.Note = DS.Model.extend({
text: DS.attr('string'),
user: DS.belongsTo('App.User'),
category: DS.belongsTo('App.Category'),
});

Rails Controller

class UsersController < ApplicationController
def index
render json: current_user.users.all, status: :ok
end

def show
render json: current_user.users.find(params[:id]), status: :ok
end
end

class CategoriesController < ApplicationController
def index
render json: current_user.categories.all, status: :ok
end

def show
render json: current_user.categories.find(params[:id]), status: :ok
end
end

class NotesController < ApplicationController
def index
render json: current_user.categories.notes.all, status: :ok
# or
#render json: current_user.users.notes.all, status: :ok
end

def show
render json: current_user.categories.notes.find(params[:id]), status: :ok
# or
#render json: current_user.users.notes.find(params[:id]), status: :ok
end
end

请注意:这些 Controller 是一个简化版本(索引可能会根据请求的 ID 进行过滤,...)。你可以看看 How to get parentRecord id with ember data供进一步讨论。

有源模型序列化程序

class ApplicationSerializer < ActiveModel::Serializer
embed :ids, include: true
end

class UserSerializer < ApplicationSerializer
attributes :id, :name
has_many :notes
end

class CategorySerializer < ApplicationSerializer
attributes :id, :name
has_many :notes
end

class NoteSerializer < ApplicationSerializer
attributes :id, :text, :user_id, :category_id
end

我们在此处包含侧载数据,但您可以避免它,设置 include false 的参数在 ApplicationSerializer .

用户、类别和注释将在出现时由 ember-data 接收和缓存,并且将根据需要请求丢失的项目。

关于ember.js - Ember 数据嵌套资源 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11572735/

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