【问题标题】:How to implement SaveChanges with Breeze js and Nancy如何使用 Breeze js 和 Nancy 实现 SaveChanges
【发布时间】:2015-02-11 14:16:22
【问题描述】:

我有一个带有 Breeze 和 Nancy 的 Angular JS 应用程序(使用 Owin 自托管)。 我已经想出了如何使用 Breeze 从服务器获取数据,但现在我正在尝试使用 Breeze 保存更改并遇到问题。 我见过像这样的 MVC 示例:

[HttpPost]
public SaveResult SaveChanges(JObject saveBundle)
{
    return _repository.SaveChanges(saveBundle);
}

但显然我不能对南希做同样的事情。我的应用程序向 SaveChanges 发送 POST 请求,但随后与 TypeError: undefined is not a functionCannot read property 'map' of undefined 中断

目前我只是返回与请求相同的 Json,因为我不知道响应应该是什么:

Post["/breeze/SaveChanges"] = parameters =>
{
    string response = "failed";
    try
    {
        response = new StreamReader(this.Request.Body).ReadToEnd();
    }
    catch (Exception ex)
    {
         //TODO handle
    }
    return Response.AsJson(response);
};

我不确定它是否因为收到来自服务器的错误请求或我没有正确设置而中断。

有人可以帮忙吗?

【问题讨论】:

    标签: javascript angularjs breeze nancy


    【解决方案1】:

    您可以只返回传入的saveBundle -- 几乎。当 Breeze 客户端从服务器接收到保存响应时,它期望它具有两个属性:entitieskeyMappings。实体已包含在 saveBundle 中,但您需要添加 keyMappings 数组(可以为空)。

    传入的 saveBundle 如下所示:

    {
      "entities": [
        {
          "OrderId": "4b143db9-6dd4-4c0e-90eb-97520d3694ac",
          "CustomerId": "9ef1c520-318a-4b8a-b99d-cb9f6bdb22cc",
          "OrderDate": "2015-01-30T08:00:00.000Z",
          "entityAspect": {
            "entityTypeName": "Order:#Northwind.Model",
            "defaultResourceName": "Orders",
            "entityState": "Added",
            "originalValuesMap": {
            },
            "autoGeneratedKey": null
           }
        },
        {
         ...more entities...
        }
      ],
      "saveOptions": {
        "tag": "whatever"
      }
    }
    

    传出的 saveResult 如下所示:

    {
      "entities": [
        {
          "OrderId": "4b143db9-6dd4-4c0e-90eb-97520d3694ac",
          "CustomerId": "9ef1c520-318a-4b8a-b99d-cb9f6bdb22cc",
          "OrderDate": "2015-01-30T08:00:00.000Z",
        },
        {
         ...more entities...
        }
      ],
      "keyMappings": [
      ]
    }
    

    请注意,传入的 saveBundle 在描述该实体的每个实体上都有一个entityAspect。 saveResult 不需要这个,但它无害并且会在客户端被忽略,saveOptions 也是如此。

    Breeze 文档的DataServiceAdapters 部分记录了这些格式,但您没有找到它们是可以理解的。

    【讨论】:

    • 我试图返回这个响应,但它没有帮助,在收到任何响应之前和之后仍然会抛出错误。我在这里提出了另一个问题:stackoverflow.com/questions/28500013/…,如果您能看一下,我将不胜感激。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多