nodejs / loopback:定义关系似乎没有反映在数据库上?

我正在使用strongloop loopback创build一个API。

我已经定义了我的模型,基本上所有的都是好的。 但是我有一个理解loopback如何处理关系的问题。

并不是我所定义的所有关系似乎都真正反映在数据库和界面上。

例如,我有一个模型song ,它

  • hasAndBelongsToMany albums
  • hasAndBelongsToMany playlists
  • hasAndBelongsToMany userplaylists
  • belongsTo artist

这里是/common/models/song.json

 { "name": "song", "plural": "song", "base": "PersistedModel", "idInjection": true, "properties": { //some more properties of song }, "validations": [], "relations": { "albums": { "type": "hasAndBelongsToMany", "model": "album", "foreignKey": "" }, "artist": { "type": "belongsTo", "model": "artist", "foreignKey": "" }, "playlists": { "type": "hasAndBelongsToMany", "model": "playlist", "foreignKey": "" }, "userplaylists": { "type": "hasAndBelongsToMany", "model": "userplaylist", "foreignKey": "" } }, "acls": [], "methods": [] } 

但是当我看到生成的postgresql表时,我看到:

  title | character varying(1024) | not null id | integer | not null default nextval('song_id_seq'::regclass) #some other properties of song artistid | integer | 

相应地,在localhost:3000 / explorer中的回环资源pipe理器中的接口说:

 post /song Response Class Model Model Schema { "title": "", //some other properties of song "id": 0, "artistId": 0 } 

问题:不应该也有一个歌曲,一个播放列表和一个userplaylistsvariables? 还是我在NoSql世界工作太多了,现在我忘记了如何处理关系?

BTW。 我有一个迁移脚本,我将它们添加到模型的关系时执行:

 var path = require('path'); var app = require(path.resolve(__dirname, '../server')); var dataSource = app.dataSources.cantoalegre_ps_DS; dataSource.automigrate(function(err) { if (err) { console.log("Error migrating models: " + err); } else { console.log("Successfully migrated models"); } process.exit(); }); 

通常相关的数据有外键:

客户,订单属于客户,所以订单有一列包含客户ID。

请注意,每一次更改模型都必须通过自动更新脚本与数据库同步。

 module.exports = function(app) { var ds = app.dataSources.pg; ds.isActual('mymodel', function(err, actual) { if (!actual) { ds.autoupdate('mymodel', function(err, result) { console.log("AUTOUPDATE mymodel",err,result); }); } }); };