0

我正在尝试在 LoopBack 2.1.2 中建立多对多关系

http://docs.strongloop.com/display/LB/HasManyThrough+relations

我试图 POST /api/patients/:patientId/physicians 来创建一个新的医生,它将 patientId 链接到新的医生,但没有在约会模型中设置约会日期。

是否有一个 API 调用可以在一个事务中创建它?为患者添加新医生并设置约会日期的最佳方法是什么?我必须创建自己的 RESTFUL API 调用吗?

这些是我的 json 模型

文件名:约会.json

{
    "name": "appointment",
    "base": "PersistedModel",

    "relations": {
        "patient": {
            "type": "belongsTo",
            "model": "patient"
        },
        "physician": {
            "type": "belongsTo",
            "model": "physician"
        }
    },


    "properties": {
        "appointmentDate": {
            "type": "string"
        }
    },

    "validations": [],
    "acls": [],
    "methods": []
}

文件名:患者.json

{
    "name": "patient",
    "base": "PersistedModel",

    "relations": {
        "physicians": {
            "type": "hasMany",
            "model": "physician",
            "through": "appointment"
        }
    },

    "properties": {
        "name": {
            "type": "string"
        }
    },

    "validations": [],
    "acls": [],
    "methods": []
}

文件名:医师.json

{
    "name": "physician",
    "base": "PersistedModel",

    "relations": {
        "patients": {
            "type": "hasMany",
            "model": "patient",
            "through": "appointment"
        }
    },

    "properties": {
        "name": {
            "type": "string"
        }
    },

    "validations": [],
    "acls": [],
    "methods": []
}
4

1 回答 1

4

免责声明:我是为 StrongLoop 工作的 LoopBack 开发人员。

是否有一个 API 调用可以在一个事务中创建它?

不,目前没有这样的 API。

为患者添加新医生并设置约会日期的最佳方法是什么?

您必须发送两个请求:第一个请求创建医生 ( POST /physicians),第二个请求创建约会 ( POST /appointments)。

或者,您可以使用“Patient hasMany约会”而不是“Patient hasMany doctor through Appointment”,在这种情况下可以通过添加预约

POST /patients/:patientId/appointments`

您仍然必须先创建医生。

我必须创建自己的 RESTFUL API 调用吗?

您当然可以这样做,尽管我个人不明白为什么在这种情况下两个请求是一个问题。“为给定的患者创建一个新医生预约”的操作对我来说看起来很奇怪。两个步骤(“创建一个新医生”,一段时间后“预约”)对我来说更有意义。

但是,如果你有一个很好的例子,在一个请求中创建两个记录是有意义的,那么请在 strongloop/loopback 中打开一个 github 问题以进一步讨论这个问题。

更多信息

目前,“hasMany through”关系针对“hasAndBelongsToMany”关系进行了调整,其中“through”模型只是两个 id 属性(外键)的容器。这就是为什么像这样的关系方法POST /api/patients/:patientId/physicians不支持像“appointmentDate”这样的“通过”属性的原因。

我创建了一个 github issue loopback#466来讨论如何改进 LoopBack 的这一部分,请随时在此处发表评论。

loopback-explorer ( #39 )中还有一个错误,UI 建议POST /patients/{id}/physicians期待一个约会,即使实现需要一个医生。

于 2014-08-13T08:48:12.797 回答