Я создаю API с петлей looploop.nodejs/loopback: определение отношений не отражается на базе данных?
Я определил мои модели, и в основном все хорошо там. Но у меня проблема с пониманием того, как 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 |
Соответственно, интерфейс в Loopbacks исследователя на локальном хосте: 3000/исследователь говорит:
post /song
Response Class
Model
Model Schema
{
"title": "",
//some other properties of song
"id": 0,
"artistId": 0
}
вопрос : Не должно быть также песен, списков воспроизведения и переменной userplaylists ??? Или я слишком много работал в мире 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();
});