Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模型上的Mongoose类型错误';芬顿法_Javascript_Node.js_Mongoose - Fatal编程技术网

Javascript 模型上的Mongoose类型错误';芬顿法

Javascript 模型上的Mongoose类型错误';芬顿法,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,下面的类型错误出现在一些旧代码中 TypeError: Object #<Object> has no method 'findOne' 应用程序中有一个调用GroupModel.findOne({name:'gogo'})的代码片段导致了TypeError。当我在GroupSchema中删除UserModel的require语句时,应用程序代码再次工作 为什么Javascript开始认为findOne()是添加了require语句的实例方法?这是已知的node.js问题。这意味着

下面的类型错误出现在一些旧代码中

TypeError: Object #<Object> has no method 'findOne'
应用程序中有一个调用GroupModel.findOne({name:'gogo'})的代码片段导致了TypeError。当我在GroupSchema中删除UserModel的require语句时,应用程序代码再次工作


为什么Javascript开始认为findOne()是添加了require语句的实例方法?

这是已知的node.js问题。这意味着您的代码中有循环要求,node.js禁止循环

正确的方法是使用
mongoose.model
方法。因此,您应该使用
mongoose.model('UserModel')
,而不是
UserModel
变量。因此,当调用
findSomeUsers
时,mondoose将获取
UserModel
并调用其
find
方法

GroupSchema.statics.findSomeUsers = function(group, callback) {
    this.find({name : session_user._id}, function(err, groups) {
        mongoose.model('UserModel').find({_id : {$in : group.users}}, function(err,patients) {
            // do magic
        });
    });
};

./user.js是定义用户模型的地方。那里没有要求。我不理解您的答案-var UserModel=mongoose.model('UserModel')-失败,因为它不知道模式是什么(在user.js中定义)。删除require,并将UserModel.findOne()更改为mongoose.model('UserModel')。findOne()您在
'/用户'
中定义了
用户模型吗?Smth like
module.exports=mongoose.model('UserModel',UserSchema)?如果有,那么
mongoose.model('UserModel')
应该可以正常工作。至于循环要求,我不是舒尔,这是您的情况,但它看起来像。是的,我在./user中定义了UserModel。我没有看到循环,但是在静态方法中替换UserModel引用,GroupModel再次正常工作。那是个混蛋-谢谢!我永远也猜不到这一点。谢谢有人知道为什么节点在发生这种情况时不记录警告或其他信息吗?
GroupSchema.statics.findSomeUsers = function(group, callback) {
    this.find({name : session_user._id}, function(err, groups) {
        mongoose.model('UserModel').find({_id : {$in : group.users}}, function(err,patients) {
            // do magic
        });
    });
};