私はCompoundJSを初めて使用し、jugglingDBとの1対多のリレーションシップの設定に問題がありました。データベースとしてMySQLを使用しています。
BookとAuthorの2つのモデルを設定しました。
本には多くの著者がいます。
これは私のschema.js
(db / schema.js)です:
var Book = describe('Book', function () {
property('title', String);
property('isbn', String);
property('authorId', Number);
set('restPath', pathTo.books);
});
var Author = describe('Author', function () {
property('name', String);
property('authorId', Number);
set('restPath', pathTo.authors);
});
関係をmodels/Book.jsに入れました。これは私のBook.js
(models / Book.js)です:
module.exports = function (compound, Book) {
Book.hasMany(compound.models.Author, {as: 'author', foreignKey: 'authorId'});
};
これは私のAuthor.js
(models / Author.js)です:
module.exports = function (compound, Author) {
Author.belongsTo(compound.models.Book, {as: 'books', foreignKey: 'authorId'});
};
問題は、これらの関係を作成できないことです。テーブルをチェックすると、テーブルに外部キーが設定されていません。
モデルBook.jsとAuthor.jsからリレーションを削除し、schema.js自体にリレーションを配置します
その後、schema.jsは次のようになります。
var Book = describe('Book', function () {
property('title', String);
property('isbn', String);
property('authorId', Number);
set('restPath', pathTo.books);
});
var Author = describe('Author', function () {
property('name', String);
property('authorId', Number);
set('restPath', pathTo.authors);
});
Book.hasMany(Author, {as: 'author', foreignKey: 'authorId'});
Author.belongsTo(Book, {as: 'books', foreignKey: 'authorId'});
しかし、結果は同じです。
上記のコードに問題はありますか?もしそうなら、どうすればそれを解決できますか?