node.js - nodejs - node versions
RelaciĆ³n uno a muchos en CompoundJS (1)
Soy nuevo en CompoundJS y tuve un problema al configurar una relación de uno a muchos con malabaresDB. Estoy usando MySQL como base de datos.
He configurado dos modelos de Libro y Autor.
El libro tiene muchos autores.
Este es mi 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);
});
Puse la relación en los modelos / Book.js. Este es mi Book.js
(models / Book.js):
module.exports = function (compound, Book) {
Book.hasMany(compound.models.Author, {as: ''author'', foreignKey: ''authorId''});
};
Este es mi Author.js
(models / Author.js):
module.exports = function (compound, Author) {
Author.belongsTo(compound.models.Book, {as: ''books'', foreignKey: ''authorId''});
};
El problema es que no puedo crear estas relaciones. Cuando reviso la tabla, no aparece ninguna clave foránea en la tabla.
Elimino la relación de los modelos Book.js y Author.js y pongo la relación en el archivo schema.js
Después de eso, el schema.js se verá así:
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''});
pero el resultado es el mismo
¿Hay algún problema en el código anterior? si es así, ¿cómo puedo resolver eso?
Parece que el autor de compoundjs no ha implementado la funcionalidad del modelo. Por ahora, sus relaciones deben definirse al final de su archivo de esquema.
Además, está anulando los objetos del esquema almacenando el valor de retorno de la función de definición. Eliminar var Book = y var Author =.
Y, ForeignKey se crea automáticamente.
schema.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''});
Actualizar:
OH. Tu problema NO es definir las relaciones, sino usarlas. Los documentos de Jugglingdb no son muy claros en esto. Para establecer una relación, debe usar el siguiente formato: Consulte los DOCS para obtener más información: 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()
})
O
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()
})