将模型“user”build立为“user_flag”为“user”

我有两个模型:

用户

'use strict'; var Mystical = require('../mystical'), Blog = require('./blog'), Flag = require('./user/flag'); module.exports = Mystical.db.Model.extend({ tableName: 'user', defaults: { isAdmin: 0, isConfirmed: 0 }, blogs: function blogs() { return this.hasMany(Blog, 'userId'); }, flags: function flags() { return this.hasMany(Flag, 'userId'); } }); 

…和旗帜

 'use strict'; var Mystical = require('../../mystical'), User = require('../../model/user'); module.exports = Mystical.db.Model.extend({ tableName: 'user_flag', user: function user() { return this.belongsTo(User, 'id'); } }); 

在一个页面上,我试图得到一个标志:

 (new Flag({ content: req.params.identifier, flag: 'register_complete' })).fetch({ withRelated: ['user'] }).then(onData).otherwise(function(error) { console.log(error); }); 

但是每次我调用这个函数时,都会触发另外的callback函数:

 TypeError: object is not a function at exports.Relation.RelationBase.extend.relatedInstance (/my/secret/dir/node_modules/bookshelf/dialects/sql/relation.js:217:29) at exports.Relation.RelationBase.extend.init (/my/secret/dir/node_modules/bookshelf/dialects/sql/relation.js:43:39) at exports.Model.ModelBase.extend.belongsTo (/my/secret/dir/node_modules/bookshelf/dialects/sql/model.js:37:76) at user (/my/secret/dir/core/model/user/flag.js:10:21) at EagerBase.fetch (/my/secret/dir/node_modules/bookshelf/dialects/base/eager.js:56:40) at /my/secret/dir/node_modules/bookshelf/dialects/sql/model.js:232:60 at NearFulfilledProxy.when (/my/secret/dir/node_modules/bookshelf/node_modules/when/when.js:465:43) at Object._message (/my/secret/dir/node_modules/bookshelf/node_modules/when/when.js:389:25) at deliver (/my/secret/dir/node_modules/bookshelf/node_modules/when/when.js:299:7) at /my/secret/dir/node_modules/bookshelf/node_modules/when/when.js:296:63 

现在,我试图与hasMany,hasOne,belongsTo以及belongsToMany产生我的联系。 但没有任何作品…

任何人的想法?

我有一种感觉,这可能是一个循环参考问题:

尝试更换:

 return this.hasMany(Flag, 'userId'); 

 return this.hasMany(require('./user/flag'), 'userId'); 

 return this.belongsTo(User, 'id'); 

 return this.belongsTo(require('../../model/user'), 'id'); 

看看你是否还有同样的问题。