gpt4 book ai didi

javascript - 如何使用 Breeze js 和 Nancy 实现 SaveChanges

转载 作者:行者123 更新时间:2023-12-03 10:50:26 25 4
gpt4 key购买 nike

我有一个由 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);
};

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

有人可以帮忙吗?

最佳答案

您可以只返回传入的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 也是如此。

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

关于javascript - 如何使用 Breeze js 和 Nancy 实现 SaveChanges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28440285/

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