使用最新的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(etc)),它可以正常工作。怎么了?
答案 0 :(得分:0)
当您说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
。我希望这能回答您的问题。
答案 1 :(得分:0)
我设法通过更改model.js来修复它
module.exports.default = userModel;
,然后在另一个文件中:
var userModel = require(./model).default;
现在,智能感知可以正常工作了。