gpt4 book ai didi

extjs - 如何在存储代理的配置中使用 api 属性 - CRUD 方法

转载 作者:行者123 更新时间:2023-12-04 21:53:23 25 4
gpt4 key购买 nike

谁能告诉我我们应该在哪里编写创建/更新等代码片段。我是在proxy的api属性下写的。如何验证输出。请指导我如何使用 store api。

我正在测试,所以请更清楚地让我理解和使用该功能

最佳答案

配置本身是 described here在文档中。但听起来你的语法是正确的。

您应该知道的第一件事是此配置仅适用于扩展 Ext.data.proxy.Server 的代理。 .阅读“代理类型”部分 here .

通过在此配置中定义不同的 URL,您只需告诉商店将 ajax 请求发送到哪里,以在您的服务器端执行不同的 CRUD 操作。

例如,调用 store.load()将 ajax 请求发送到 api.read URL,由您来确保此 URL 正确返回数据。

一个 Ext.data.Store在内部跟踪对“脏”记录(创建、更新或销毁)执行的其他操作。基于此,它将向相应的 api 发送 ajax 请求。配置网址。或者,如果您执行了不同类型的操作,例如创建和删除的记录它将发送多个 ajax 请求(每个 URL 一个)以及有关您创建或删除的记录的数据。

下面是一些示例代码来说明这一点(如果您填写自己的 URL 和 data.model,您也可以将其用于测试)。该示例使用默认读取器/写入器,它将数据作为 JSON 发送到服务器(代理中有配置以指定不同的格式)。

var myStore = Ext.create('Ext.data.Store', {
model: 'MyApp.model.SomeModel',
proxy: {
type: 'ajax',
// without api defined ALL ajax calls will use the 'url' config
url: '/some/url',
api: {
create: '/some/url/to/insert/records/in/db',
read: '/some/url/to/select/records/from/db',
update: '/some/url/to/update/records/in/db',
destroy: '/some/url/to/delete/records/in/db'
}
}
}

// this calls the api.read URL
myStore.load();

// assuming we now have records, this will delete the first record
// on the client side (it will error if there are not records)
myStore.remove(myStore.first());

// the store knows we deleted a record so this will call the api.destroy URL
myStore.sync();

// this updates the first record on the client side
myStore.first().set('some_field_name', 'a string value');

// now we are creating a record on the client side
myStore.add(Ext.create('MyApp.model.SomeModel'));

// the store knows we updated AND created a record so this will call the
// api.update URL AND the api.create URL
myStore.sync();

关于此的另外两个有用的信息:
  • 有一个名为 batchActions 的代理配置described here inthe docs .是true默认情况下,这意味着所有 CRUD
    当您发送时,某种类型的 Action 被分组到一个数组中
    对数据库的请求。例如。如果您删除了 4 条记录,您的api.destroy URL 不会收到 4 个 ajax 请求,它会收到 1 个
    带有 4 条记录的数组的 ajax 请求。这有助于减少
    只要您将 URL 配置为处理
    大批。您可以将此配置设置为 false并且商店将发送 4
    api.destroy 的请求网址。您还可以设置
    作家的allowSingle配置(described here)以确保
    即使只有一个请求,所有请求都作为数组发送
    记录(这样您就可以将服务器端代码设置为始终
    处理一个数组)。
  • Ext.data.Store设置为处理创建和回调
    更新操作,您只需确保您的 URL 发回一个。
    当您调用 myStore.sync()商店会自动更换
    客户端的记录与您发送的记录
    打回来。这对于创建的记录很有用,因为您可以发送
    使用创建的记录返回正确的数据库 ID 并拥有它
    在客户端可用,稍后如果用户想要编辑或
    删除您拥有正确数据库 ID 的记录。你
    也可以在服务器端做其他处理,发回其他
    数据,以便您拥有完整的记录(例如,我有时
    发回创建用户 ID 和创建时间)。
  • 关于extjs - 如何在存储代理的配置中使用 api 属性 - CRUD 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13252248/

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