Jet*_*ohn 5 node.js express railway.js compoundjs
我是CompoundJS的新手,我在使用jugglingDB设置一对多关系时遇到了问题.我使用MySQL作为数据库.
我已经设置了两个模型Book和Author.
书中有很多作者.
这是我的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);
});
Run Code Online (Sandbox Code Playgroud)
我把关系放在models/Book.js中.这是我的Book.js(models/Book.js):
module.exports = function (compound, Book) {
Book.hasMany(compound.models.Author, {as: 'author', foreignKey: 'authorId'});
};
Run Code Online (Sandbox Code Playgroud)
这是我的Author.js(models/Author.js):
module.exports = function (compound, Author) {
Author.belongsTo(compound.models.Book, {as: 'books', foreignKey: 'authorId'});
};
Run Code Online (Sandbox Code Playgroud)
问题是我不能创造这些关系.当我检查表时没有在表中设置外键.
我从模型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'});
Run Code Online (Sandbox Code Playgroud)
但结果是一样的.
上面的代码有什么问题吗?如果是这样我怎么解决?
看来compoundjs的作者还没有实现Model功能。目前,您的关系应该在架构文件的末尾定义。
此外,您还可以通过存储定义函数的返回值来覆盖 schemaa 对象。删除 var Book = 和 var Author =。
并且,foreignKey 是自动创建的。
架构.js:
describe('Book', function () {
property('title', String);
property('isbn', String);
set('restPath', pathTo.books);
});
describe('Author', function () {
property('name', String);
set('restPath', pathTo.authors);
});
Book.hasMany(Author, {as: 'author', foreignKey: 'authorId'});
Author.belongsTo(Book, {as: 'books', foreignKey: 'authorId'});
Run Code Online (Sandbox Code Playgroud)
更新:
哦。您的问题不是定义关系,而是使用它们。jugglingdb 的文档对此不是很清楚。为了建立关系,您必须使用以下格式:有关更多信息,请参阅文档: https: //github.com/1602/jugglingdb
Author.find(id_here_as_string, function(err, author_record){
book_record = new Book({
title: 'whatever'
isbn: 'again whatever here'
});
book_record.author(author_record);
book_record.save()
})
Run Code Online (Sandbox Code Playgroud)
或者
Author.find(id_here_as_string, function(err, author_record){
book_record = author_record.books.build({
title: 'whatever'
isbn: 'again whatever here'
});
book_record.save()
})
Run Code Online (Sandbox Code Playgroud)