1

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

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

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 调用来创建每个玩具?

感谢您的帮助

4

1 回答 1

0

您需要在 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);
    });
}

详细答案在这里: 如何在使用 Backand BaaS 时创建具有关系的对象? 相关问题 Update a complex object on Backand using $http PUT

于 2016-07-14T15:08:19.317 回答