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
문제는 Author 클래스가 책을 찾지 못하는 것 같습니다! 그것은 단지 빈 개체입니다. 그러나 index.js에서 내보내기를 전환하면 Author 뒤에 Book을 넣습니다. 작동하지만 다른 모델은 작동을 멈 춥니 다.
나는 그것을 작동시키기 위해 어떤 해킹도하고 싶지 않습니다.
답변
순환 종속성이 있기 때문입니다. Node.js는이를 매우 구체적인 방식으로 처리합니다.
-
첫 번째 모듈이로드되고 실행됩니다 (이 경우
book.js
). 그것은 (book.js
)로드 (두 번째 모듈을 실행author.js
이 (때)book.js
() 다른 필요author.js
) -
두 번째 모듈 (
author.js
)이로드되고 실행되면 (author.js
) 첫 번째 모듈 (book.js
)이 필요하지만 (author.js
)는 부분적으로 채워진 객체를 받게됩니다. 그 대상에있다 -
book.js
이 완전히 실행 된 후author.js
가져온 개체 는require('./book')
전체book.js
모듈 개체가됩니다.
자세한 정보는 다음 문서를 참조하십시오. http://nodejs.org/api/modules.html
해당 스키마를 ActiveRecord 개체 중 하나에 동적으로 추가 할 수 있다면 이것이 해결하는 한 가지 방법입니다. 이것은 실제로 일종의 까다로운 상황입니다. 실제로 모듈 시스템이 없어도 문제가 발생할 수 있습니다. 이 모든 코드를 하나의 파일에 넣으면 어떻게 작동할까요?