node.js - quickstart - Requerir devuelve un objeto vacío
node js quickstart (1)
Esto se debe a que tiene una dependencia circular. Node.js maneja esto de una manera muy específica:
El primer módulo carga y ejecuta (en este caso,
book.js
). It (book.js
) cargará y ejecutará el segundo módulo (author.js
) cuando it (book.js
) requiera el otro (author.js
)Cuando el segundo módulo (
author.js
) se carga y se ejecuta, él (author.js
) requiere el primer módulo (book.js
) pero éste (author.js
) recibirá un objeto parcialmente lleno , sinauthor.js
cuántas cosas se hayan establecido en el Exportaciones en book.js antes de requerir author.js estarán en ese objetoDespués de
book.js
completamente, el objetoauthor.js
obtenido derequire(''./book'')
será el objeto de módulo completobook.js
Para obtener más información, aquí están los documentos: http://nodejs.org/api/modules.html
Si es posible agregar dinámicamente ese esquema a uno de esos objetos ActiveRecord, esa es una forma de resolver esto. Esto es realmente una situación complicada. De hecho, incluso sin el sistema de módulos, esto causaría problemas para usted. Si pone todo este código en un solo archivo, ¿cómo lo haría funcionar?
Tengo una carpeta, que tiene index.js y un par de modelos (clases) index.js
module.exports = {
Book : require(''./book''),
Author : require(''./author'')
}
book.js
var Author = require(''./author'')
var Book = models.ActiveRecord.extend({
schema : {
belongsTo : {
author : Author
}
}
})
module.exports = Book
author.js
var Book = require(''./book'')
var Author = models.ActiveRecord.extend({
schema : {
hasMany : {
author : Book
}
}
})
module.exports = Author
¡El problema es que la clase de autor no parece encontrar el libro! Es solo un Objeto vacío. Sin embargo, si cambio las exportaciones en index.js, poner Book después de Author - funciona, pero luego el otro modelo deja de funcionar.
No quiero hacer ningún truco para que funcione.