查询LoopBack中的引用/查找值

时间:2016-12-12 10:46:13

标签: rest strongloop lookup-tables loopback

如何查询引用/查找数据以及在模型之间构建以支持它们的正确关系是什么?

示例:

地址模型有一个字段,表示地址所在的城市。城市模型具有预先填充的城市列表。我想在两个模型之间建立一个环回关系,这样我可以在添加新地址时引用一个城市,并在查询地址时将城市作为地址的一部分返回。

在关系数据库中,你可以有一个外键,让我们说CityId填充了对城市的引用。然后,您可以查询地址表并在城市表中包含一个联接,以返回与该地址相关的城市。

在环回中,我有以下模型(示例中为简化):

地址模型

{
    "name": "Address",
    "base": "PersistedModel",
    "idInjection": true,
    "options": {
        "validateUpsert": true
    },
    "properties": {
        "addressLineOne": {
            "type": "string",
            "required": true
        },
    },
    "validations": [],
    "relations": {    
        "city": {
            "type": "hasOne",
            "model": "city",
            "foreignKey": "cityId"
        }
    },
    "acls": [],
    "methods": {}
}

城市模型

{
    "name": "City",
    "base": "PersistedModel",
    "idInjection": true,
    "options": {
        "validateUpsert": true
    },
    "properties": {
        "cityName": {
            "type": "string",
            "required": true
        }
    },
    "validations": [],
    "relations": {},
    "acls": [],
    "methods": {}
}

1 个答案:

答案 0 :(得分:1)

对于从hasOne到belongsTo的地址模型更改关系:

...
"relations": {    
    "city": {
        "type": "belongsTo",
        "model": "City",
        "foreignKey": "cityId"
    }
}
...

BelongsTo关系将外键添加到Address模型。所以每个地址都有一个cityId。

对于City模型,您可以添加如下关系:

"relations": {    
    "addresses": {
        "type": "hasMany",
        "model": "Address",
        "foreignKey": "cityId"
    }
}

现在,您将能够获得任何城市的所有地址。

P.S。我很确定在配置关系时,您需要为模型使用确切的模型名称:" model":" City"或"模型":"地址",就像你在模型描述中设置它一样:

{
   "name": "Address",
   "base": "PersistedModel",
   "idInjection": true,
...