Javascript 无法使用REST API外部的Mongoose查询MongoDB

Javascript 无法使用REST API外部的Mongoose查询MongoDB,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,这让我快发疯了。快速路由器可以很好地与猫鼬模型配合使用,但我不能在没有路由的其他文件中使用这些模型。每次我尝试使用导入的模型或mongoose模式运行该文件时,它都会在控制台中返回空白。我在用户路由器文件中以完全相同的方式调用该函数 /////////////////////////////// //文件:test.js(不工作)// /////////////////////////////// var user=require(“./user”); getUserById({u id:'5

这让我快发疯了。快速路由器可以很好地与猫鼬模型配合使用,但我不能在没有路由的其他文件中使用这些模型。每次我尝试使用导入的模型或mongoose模式运行该文件时,它都会在控制台中返回空白。我在用户路由器文件中以完全相同的方式调用该函数

///////////////////////////////
//文件:test.js(不工作)//
///////////////////////////////
var user=require(“./user”);
getUserById({u id:'5c902f4c75d827057cc5ad17',函数(err,user){
if(err)返回控制台。error(err);
console.log(用户);
});
////////////////////////////
//用户模型文件:User.js//
////////////////////////////
var mongoose=require('mongoose');
mongoose.Promise=global.Promise;
mongoose.set('debug',true);
var bcrypt=require('bcryptjs');
恒力矩=要求的(‘力矩’);
var UserSchema=newmongoose.Schema({
用户名:{type:String,必需:true},
电子邮件:{type:String,必需:true},
名字:{type:String,必需:true},
lastname:{type:String,必需:true},
密码:{type:String,必需:true},
ChargeAPID:{type:String,必需:false},
地址:{type:String,必需:false},
状态:{type:String,必需:true},
县:{type:String,必需:true},
businessname:{type:String,必需:false},
更新日期:{type:String,默认值:moment(new date()).format(“DD/MM/YYYY HH:MM:ss”)},
已激活:{type:Boolean,必需:false},
活动_sub:{type:String,必需:false},
lastlogin:{type:String,必需:false},
datecreated:{type:String,必需:true}
});
var User=mongoose.model('User',UserSchema);
module.exports=用户;
module.exports.test=函数(id,回调){
console.log('test');
User.findById(id,回调);
}
module.exports.getUserById=函数(id,回调){
User.findById(id,回调);
}
module.exports.getUserByUsername=函数(用户名,回调){
const query={username:username};
User.findOne(查询、回调);
}
//比较登录密码的方法
module.exports.comparePassword=函数(candidatePassword、res、回调){
b crypt.compare(candidatePassword,res,(err,isMatch)=>{
if(err){返回回调(err);}
回调(null,isMatch);
});
};
//密码散列
module.exports.bcyprtPw=函数(密码){
var salt=bcrypt.genSaltSync(10);
var hash=bcrypt.hashSync(密码,salt);
console.log(散列);
返回(散列);

}
我认为您应该将user.js文件中的函数导出为

module.exports = { User , test, getUserById , ..etc}
并将所需的函数作为

 const { User , test, getUserById } = require("./user.js");
你也可以参考这个答案


这不就是为模式创建自定义方法吗?我只是尝试使用猫鼬自带的方法。它们都可以在我的路由器文件中正常工作,但我正在尝试在没有express的情况下在另一个文件中使用它们。请检查,我已根据您的评论编辑了我的答案。仍然没有结果。有趣的是回调对方法不起作用。我甚至不能在其中记录一个随机字符串。这仅适用于mongoose方法,并不是一个明确的导出问题。@AdrianCorey您能调试它吗?您能分享您的user.js代码吗?这方面有任何更新吗?