如何使用Blueprint REST API通过关联向sailsjs添加记录

时间:2017-01-30 20:21:22

标签: sails.js

我需要实现through association,以便在连接表中与自定义字段建立多对多关系。在SailsJS中,通过关联需要三个模型;两个模型是您的业务对象,我的情况是SpeciesLands,第三个代表连接表SpeciesLands。请参阅本文底部的我的SailsJS模型。

一旦我建立了关联,我如何通过蓝图API关联两个对象?我是否需要POST端点使用我想要链接的/specieslandsSpecies的ID来获取数据Land?是否可以在like you can with the many-to-many关系的同时创建和链接对象?这是否需要在SailsJS控制器中完成,而不是通过蓝图API?

以下是我的模特:

module.exports = {
    attributes: {
        scientificName: {
            type: 'string',
            required: true,
            unique: true
        },
        commonName: {
            type: 'string'
        },
        taxon: {
            type: 'string',
            required: true
        },
        leadOffice: {
            type: 'string'
        },

        lands: {
            collection: 'lands',
            via: 'land',
            through: 'specieslands'
        }
    }
};

module.exports = {
    attributes: {
        agency: {
            type: 'string',
            required: true
        },
        name: {
            type: 'string',
            required: true,
            unique: true
        },
        species: {
            collection: 'species',
            via: 'species',
            through: 'specieslands'
        }
    }
};

SpeciesLands

module.exports = {
    attributes: {
        species: {
            model: 'species'
        },
        land: {
            model: 'lands'
        },
        population: {
            type: 'string',
            required: true,
            enum: ['O', 'O+', 'P', 'U'] // THIS IS THE REASON FOR ASSOCIATION
        }
    }
};

2 个答案:

答案 0 :(得分:0)

我认为这不可能。

我很确定你必须:

  1. 创建Specie
  2. 关系
  3. 1& 2使用POST / modelName 3使用http://sailsjs.com/documentation/reference/blueprint-api/add-to

答案 1 :(得分:0)

在使用through关联时,Blueprint API将期望通过POST将关联生成到关联模型(关系模型)中。

在您的情况下,如果要将“物种”模型中的项目与“土地”模型中的项目相关联,则可以执行以下操作:

curl --header "Content-Type: application/json" 
  --request POST 
  --data '{species:15,land:51,population:"O"}' 
  http://www.example.com/SpeciesLands

或者在邮递员中: Screenshot of example API request in Postman