VSCode module.exports自动完成不工作
它采用了最新版本的VSCode和1.30.2它不会看到那些导出模块内部的功能。
这是model.js
var userModel = mongoose.model('userModel', usersSchema);
userModel.isUsernameTaken = isUsernameTaken;
module.exports = userModel;
function isUsernameTaken(username) {
return userModel.findOne({username:username});
}
在app.js
var userModel = require('./model');
现在,在打字的usermodel。在app.js我应该看到isUsernameTaken的自动完成的建议,但它不存在,也没有任何的模型中声明的功能是“看得见”。但是,如果我键入的确切函数名(区分大小写)。 (例如:userModel.isUserNameTaken(等)),它的工作原理。怎么了 ?
回答如下:当你说userModel.isUsernameTaken(username)
,你真正想说的是mongoose.model('userModel', usersSchema).isUsernameTaken(username)
,其中将返回未定义。你必须做的就是让用户模型与它内部的mongoose.model('userModel', usersSchema)
的对象。有点像这样:
var userModel = function () {
this.model: mongoose.model('userModel', usersSchema),
this.isUsernameTaken: (username) => {
return this.model.findOne({username:username});
}
};
然后,如果你想获得这些属性可以使用,然后var user = new userModel();
使用user.isUsernameTaken(/*put username here*/);
。或者,如果你想进入单独的模型,你可以这样做:user.model
。我希望这回答了你的问题。