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); }); } }); };