要求返回一个空的对象
我有一个文件夹,它有index.js和一些模型(类)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
问题是作者类似乎没有find书! 这只是一个空的对象。 但是,如果我在index.js中切换出口,将Book After Author – 工作,但另一个模型停止工作。
我不想做任何黑客来使其工作。
这是因为你有一个循环依赖。 Node.js以非常特定的方式处理这个问题:
-
第一个模块加载并运行(在这种情况下,
book.js
)。 当它(book.js
)需要另一个(author.js
)时,它(book.js
)将加载并运行第二个模块(author.js
) -
当第二个模块(
author.js
)被加载并运行时,它(author.js
)需要第一个模块(book.js
),但是它(author.js
)将会收到一个部分填充的对象 – 然而,在它需要author.js之前,在book.js中导出将在该对象中 -
book.js
完全运行后,require('./book')
的对象author.js
将成为完整的book.js
模块对象
欲了解更多信息,这里是文档: http : //nodejs.org/api/modules.html
如果可以dynamic地将这个模式添加到这些ActiveRecord对象之一,那么这是解决这个问题的一种方法。 这实际上是一个棘手的情况。 事实上,即使没有模块系统,这也会给你带来问题。 如果你把所有这些代码放在一个文件中,你将如何使它工作?