【问题标题】:im trying to update database record with function return Ionic, Back&我正在尝试使用函数 return Ionic, Back& 更新数据库记录
【发布时间】:2017-09-22 06:22:32
【问题描述】:

您好,我正在尝试使用返回数字的函数更新我的数据库

$scope.sum = function()
{ 
    return  $scope.inp + $scope.points; 
};

此函数将更新对象点、列名和 id 1 中的记录:

$scope.addPoint = function() {

    PointService.addPoint($scope.sum, 1)
    .then(function(result) {
      $scope.inp = 0;

      getMyPoints();
    });
}

addPoint = function(id,points) 
{
    return $http.put(getUrlForId(1),points,name);
}

错误是:错误详细信息:无法将类型“int”转换为“System.Collections.Generic.Dictionary”

字段的数据类型是浮点数。 知道代码有什么问题吗?

【问题讨论】:

    标签: angularjs ionic-framework backand


    【解决方案1】:

    您将函数引用传递给 PointService.addPointer(), 使用这个:

    $scope.addPoint = function() {
    
        PointService.addPoint($scope.sum(), 1) // NOT PointService.addPoint($scope.sum, 1) 
        .then(function(result) {
          $scope.inp = 0;
    
          getMyPoints();
        });
    }

    这将执行您的函数并将输出(id 参数)传递给 addPoint 函数,此外,为了更安全,您可以从 $scope.sum() 返回 Number,即

    $scope.sum = function()
    { 
        return  Number($scope.inp + $scope.points); 
    };

    【讨论】:

    • 它仍然给我同样的错误:无法将 int 转换为 我应该将 scope.sum() 转换为对象字符串???
    【解决方案2】:

    您与 Backand 的联系方式似乎存在问题。您使用以下代码发送您的积分:

    addPoint = function(id,points) 
    {
        return $http.put(getUrlForId(1),points,name);
    }
    

    这是调用 Backand API 的旧版本,手动构造 PUT 请求,并将“points”和“name”作为“Data”和“config”参数放入 $http。通过 PUT 更新对象时,您需要将更新作为对象提供。因此,如果您想更新对象的点和名称(并且我正在根据我从上面的代码 sn-p 中得知的内容做一些假设),您需要将这些属性封装在一个具有以下一般格式:

    {
      "field_name_1":"new value_1",
      "field_name_2":"new value_2",
      etc ...
    }
    

    这应该作为请求的正文发送。因此,对于您的代码,将其更改为以下内容,看看是否有帮助:

    addPoint = function(id,points) 
    {
        return $http.put(getUrlForId(1),{points: points, name: name});
    }
    

    要提供有关您看到此特定错误的原因的更多信息,B​​ackand 依赖于正文中的这种 JSON 格式。我们的平台肯定应该做更多的验证(我会为开发人员创建一个工单,以便更优雅地处理不符合要求的输入),但目前我们只需获取请求的主体,将其转换为字典对象,然后开始请求的操作。由于您上面的代码仅发送“1.0”作为正文,因此无法转换为字典,导致堆栈异常和您看到的问题。

    请注意,我们提供了一个新的 SDK,它封装了这些 HTTP 方法,为您执行身份验证标头生成和 HTTP 消息传递,并提供处理响应的承诺。您可以在我们的 Github 页面https://github.com/backand/vanilla-sdk 上找到它。要使用新的 SDK 进行相同的调用,代码如下所示:

    backand.object.update("your object name", 1, {name: name, points: points})
      .then(function(response){
        console.log(response.data);
      });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      • 2019-04-14
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      相关资源
      最近更新 更多