在可能保存模型时处理 ember-data 中的自定义服务器端错误

2023-12-26

保存模型时是否有正确的方法来处理自定义错误?举个例子,假设我有一个只有两个属性“名称”和“值”的模型。当我这样做时:

var myModel = this.get('store').createRecord('myModel', {"name": "someName", "value": "someValue"});
myModel.save().then(function() {
    //if success
    //server responded with {"myModel:{"id":1,"name":"someName","value":"someValue"}"}
},function() {
    //if failure
    //server responded with {"error":"some custom error message"}
    //BUT HOW TO CATCH THIS AND POSSIBLY REMOVE THE MODEL FROM THE STORE

});

解决此问题的一种方法是进行额外的 ajax 调用来检查名称是否唯一,然后进行保存。我只是想知道这里最好/优雅的方法是什么。

谢谢, 迪伊

EDIT :我认为在 groovy 的服务器端提供更多上下文可能会有所帮助。所以这里是:

在我的控制器中我有:

def create() {

    try {
        newRow = someService.create(params)
        render someService.list(newRow) as JSON//returns data in format needed by ember-data
    }
    catch (ValidationException ex) {
        def errors = ["errors":[]]

        ex.errors.allErrors.each{
            if(it.arguments[0] == "fieldName" && it.code=="constrantViolated"){
                errors.errors.push(["field":it.arguments[0],"message":"some custom message"])
            }
        }
        //I am using 422 here because of post in http://stackoverflow.com/questions/7996569/can-we-create-custom-http-status-codes
        render(status: 422, contentType: 'JSON', text: (errors as JSON))
    }

}

然后在我的 ember 控制器中:

    var myModel = self.get('store').createRecord('myModel ', myModelDataInJSON);
myModel .save().then(function () {
        //if success
                },
    function (response) {
        myModel .deleteRecord();
        var errors = $.parseJSON(response.responseText);
        for (var key in errors.errors) {
            //do something
        }
    });

deleteRecord将删除该记录。

myModel.save().then(function(response) {
  //if success
  //server responded with {"myModel:{"id":1,"name":"someName","value":"someValue"}"}
},function(response) {
  //if failure
  //server responded with {"error":"some custom error message"}
  //BUT HOW TO CATCH THIS AND POSSIBLY REMOVE THE MODEL FROM THE STORE
  if(response.error=='no good'){
    myModel.deleteRecord();
  }

});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在可能保存模型时处理 ember-data 中的自定义服务器端错误 的相关文章

随机推荐

  • 如何根据键从对象文字返回值?

    我有一个数组如下 如何检索特定键的值并将该值放入变量中 var obj one 1 two 3 three 5 four 1 five 6 例如 如果我想获取 三 的值 我该如何在 javascript 或 jQuery 中实现呢 您可以通
  • 在 ubuntu 18.04.4LTS 上重新安装 gitlab 后,gitlab-reconfigure 在 redis 上被阻止

    这是我第三次在服务器上安装 gitlab 之前从未遇到过问题 在处理 12 9 0 上的问题后 我决定重新安装 gitlab ce 12 10 0 在安装新版本之前 我已确保删除所有 gitlab 文件并重新启动服务器 步骤1 卸载gitl
  • numpy 中数据类型的奇怪隐式转换

    我创建了一个简单的 numpy 数据类型 uint 如下所示 import numpy as np a np array 1 2 3 dtype np uint 当我计算时 a 0 1 我期望结果为 2 但它给出了 2 0 为什么 np u
  • 如何从通用方法访问类的属性 - C#

    我有一个具有以下属性的三类 Class A public int CustID get set public string Name get set Class B public int CustID get set public stri
  • 强制分配返回的对象[重复]

    这个问题在这里已经有答案了 在 C 中 有没有办法强制对函数的返回值进行赋值 即如果我有一个成员函数 foo class myClass public T1 foo T2 x T1 y something return y 我可以在 mai
  • Android POSIX 兼容吗?

    Android POSIX 兼容吗 我知道它使用 Linux 内核 但我不确定这是否意味着它兼容 POSIX 因为 POSIX 标准更多地处理用户层函数 那么 兼容吗 例如 如果我在 C 程序中仅使用 ANSI 和 POSIX 函数 它是否
  • 如何在 Objective-C 中取消安排 NSTimer

    我在应用程序中使用嵌套 NSTimer 我这里有两个问题 如何在此函数中重新启动计时器 void updateLeftTime NSTimer theTimer 如何杀死之前的计时器 因为 void updateLevel NSTimer
  • faunadb中如何进行多条件查询?

    我尝试提高对 FaunaDB 的理解 我有一个包含以下记录的集合 ref Ref Collection regions 261442015390073344 ts 1587576285055000 data name italy attri
  • Python:从文件夹中读取多个json文件

    我想知道如何阅读几本json来自单个文件夹的文件 不指定文件名 只是它们是 json 文件 此外 还可以将它们变成pandas数据框 你能给我一个基本的例子吗 一种选择是列出目录中的所有文件操作系统列表目录 https docs pytho
  • .dockerignore 无法包含具有 !**/*.extension 模式的子目录中的文件

    我遇到了问题 dockerignore文件 这是我的项目结构 file sh file js file go file py subdir file2 go file2 py dockerignore Dockerfile 根据 docke
  • c# 将DataGridView保存到Xml文件

    这是我保存文件的按钮 private void metroButton12 Click object sender EventArgs e save DataSet ds DataSet dataGridView1 DataSource S
  • 使用 resharper 从大型类创建接口

    我有一个非常大的类 有很多方法 是否可以使用 Resharper 从该类构建接口 Yes 我的快捷键是 Ctrl Shift R 来调出重构选项 对类名执行此操作允许您 提取接口 或者 您可以从菜单 gt ReSharper gt Refa
  • 在哪里放置对象映射(在 RestKIt 中)

    因为我不想劫持另一个线程 所以我提出了关于映射的问题 首先阅读 RestKit 中放置对象映射的最佳位置是哪里 https stackoverflow com questions 7190721 wheres the best place
  • 如何在启用 Markdown 的 Slack 附件行的开头显示大于号?

    我正在尝试匹配 Slack API 消息的模型 该消息在附件文本行开头的链接中具有大于 gt 字符 该模型还在附件文本中使用斜体和粗体 所以我有text in the mrkdown in大批 不幸的是 这会导致 Slack 解释为 gt
  • 访问 RFC 调用系统的堆栈内存

    当程序在 SAP ECC 中运行时 系统堆栈 存储所有全局变量 无论在该单个会话中调用什么模块 程序 当它调用支持 RFC 的功能模块 FM 时 会在被调用系统中创建一个新的系统堆栈 并且当被调用 FM 完成时 只能在 ECC 中检索被调用
  • InvalidCharacterError 仅在 IE 中出现

    我们有一个订单表单 它使用 ziplookup 功能 当在字段中输入邮政编码时 城市 县 州和邮政编码也会输入到同一字段中 tr td class formLabel Zip Code td td class formColon nbsp
  • SwiftUI 和 NavigationView 的动画错误可能是什么原因造成的?

    我一直在尝试一些 SwiftUI 布局 我想尝试的事情之一是创建一个简单的圆形进度环 在对代码进行了一段时间的研究之后 我设法让一切都按照我希望的方式工作 至少对于原型来说是这样 当我将此视图嵌入到 SwiftUI NavigationVi
  • 将 python 日期格式 (%Y) 转换为 java (yyyy)

    我有很多时间格式 格式如下 Y m d H M S 有没有快速的方法或库将它们转换为 YYYY MM DD HH MM SS 我当前的方法是使用字符串替换 但也许我会错过一些边缘情况 我可能的格式化程序是 d b Y y H M S p f
  • Node.JS deflate/gzip 响应文本

    我看到了所示的示例here http nodejs org api zlib html zlib examples response writeHead 200 content encoding deflate raw pipe zlib
  • 在可能保存模型时处理 ember-data 中的自定义服务器端错误

    保存模型时是否有正确的方法来处理自定义错误 举个例子 假设我有一个只有两个属性 名称 和 值 的模型 当我这样做时 var myModel this get store createRecord myModel name someName