来自父母关系的Strongloop属性

时间:2015-08-17 18:50:09

标签: javascript node.js loopbackjs strongloop

我不知道我是不是只是盲目或者其他什么,但我怎么能做到以下几点:

我的User模型与hasOne模型的关系UserData。我只想在UserData的结果中直接使用User的一个属性。

User中的关系如下所示:

"relations": {
  "userData": {
    "type": "hasOne",
    "model": "UserData"
  }
}

User中的默认范围:

"scope": {
  "include": "userData"
}

一个User的结果是:

[
  {
    "id": 5,
    "email": "example@example.com",
    "name": "Example",
    "userData": {
      "id": 5,
      "birthdate": "1971-09-06T00:00:00.000Z"
    }
  }
]

但我想要的是:

[
  {
    "id": 5,
    "email": "example@example.com",
    "name": "Example",
    "birthdate": "1971-09-06T00:00:00.000Z"
  }
]

我怎么能做到这一点?

修改

两个模型定义:

ChiliUser

{
  "name": "ChiliUser",
  "base": "ChiliUserData",
  "idInjection": true,
  "options": {
    "validateUpsert": true,
    "mysql": {
      "table": "person"
    }
  },
  "properties": {
    "id": {
      "type": "number"
    },
    "email": {
      "type": "string"
    },
    "password": {
      "type": "string"
    },
    "vorname": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "spitzname": {
      "type": "string"
    },
    "strasse": {
      "type": "string"
    },
    "plz": {
      "type": "number"
    },
    "ort": {
      "type": "string"
    },
    "geolat": {
      "type": "string"
    },
    "geolng": {
      "type": "string"
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": []
}

ChiliUserData

{
  "name": "ChiliUserData",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true,
    "mysql": {
      "table": "person_data"
    }
  },
  "properties": {
    "id": {
      "type": "number"
    },
    "person_id": {
      "type": "number"
    },
    "birthdate": {
      "type": "date"
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": []
}

1 个答案:

答案 0 :(得分:1)

您使用的是内置User型号吗?如果是,您可以使用UserData使用base: "User"模型对其进行扩展,并且基础架构可以根据需要进行扩展:

{
  "name": "UserData",
  "base": "User",
  "properties": {}
  ...
}

但是,此设置意味着您在代码中使用UserData而不是User。由于内置的​​User模型受阻,我建议使用PersonCustomer之类的其他字词,在这种情况下它会如下所示:

{
  "name": "Person",
  "base": "User",
  "properties": {
    ...extra user data properties only...
  }
  ...
}

这样,只有Person才会拥有所有额外的"用户数据"它上面的字段,但也包括User内为node_modules/loopback/common/models/User.json定义的所有字段/方法。如果您正在使用MySQL,则会使用PersonUser中的字段组合创建Person表。