将相关数据添加到后端 api

Posted

技术标签:

【中文标题】将相关数据添加到后端 api【英文标题】:adding related data to backand api 【发布时间】:2016-06-07 07:04:47 【问题描述】:

我有一个包含几个不同对象的数据库设置。例如,假设我有一个名为“kids”的对象和一个名为“toys”的相关对象。 Toys 有一个引用孩子的“孩子”id 字段。我想要的是,当我创建一个孩子时,我还可以发送一个玩具列表并让它自动添加这些玩具。

我在“创建后”部分创建了一个操作,但每当我检查“用户输入”变量时,我的额外数据都不存在(我在应用程序中使用测试功能)。考虑以下几点:

return $http (
  method: 'POST',
  url: Backand.getApiUrl() + '/1/objects/kids/',
  params: 
    name: 'Add Kid',
    parameters: 
  ,
  data: 
    name: 'Jimmy',
    toys: ['truck', 'car', 'crane', 'motorbike'],
  
);

然后在回调中

function backandCallback(userInput, dbRow, parameters, userProfile)
    console.log(userInput);
    for ( var i = 0; i < userInput.toys.length; i++ )
        var toy = userInput.toys[i];

        //use $http POST method to create a toy which relates to the user
    

每当我检查 userInput 变量时,我得到的只是一个带有“名称”的 json 对象。不过我希望“玩具”也会在那里。

我确实想知道我是否采取了错误的方法,我是否应该调用 api 来创建一个孩子,然后从中获取数据并调用多个 api 来创建每个玩具?

感谢您的帮助

【问题讨论】:

【参考方案1】:

您需要在 POST/PUT url 的查询字符串中添加 deep=true 请看一个在多对多关系中使用它的例子 http://codepen.io/yariv/pen/eJQPEz

function updatePet(updatedPet) 
    $http(
      method: 'PUT',
      url: Backand.getApiUrl() + baseUrl + petsObjName + '/' + updatedPet.id,
     params: 
        deep: true,
        returnObject: true
     , // to save the users array
     data: updatedPet
     ).then(function(response) 
     //$scope.readList(petsObjName);
    );

这里有详细的答案: How to create objects that have relationships when using Backand BaaS? 相关问题 Update a complex object on Backand using $http PUT

【讨论】:

以上是关于将相关数据添加到后端 api的主要内容,如果未能解决你的问题,请参考以下文章

前端发送数据到后端

将 HealthKit Delete 传播到后端

添加自定义标头并使用 AWS API Gateway 将其发送到后端服务

如何在拆分数据库中将表从前端链接到后端(MS Access 2010)

将图像的源(src)添加到 formData 并通过 http post call 将其发布到后端

将 JSON 请求循环到后端(REST API)