Javascript User.findOne()不是函数
上面的代码在使用passport js身份验证的节点js中,本地注册代码不起作用 在上面的代码中,我得到了错误:Javascript User.findOne()不是函数,javascript,node.js,Javascript,Node.js,上面的代码在使用passport js身份验证的节点js中,本地注册代码不起作用 在上面的代码中,我得到了错误: User.findOne()不是函数 我的模式是正确的。。。请帮助您需要(如果您还没有)使用模型创建数据实例,如 passport.use('local-signup', new LocalStrategy({ // by default, local strategy uses username and password, we will override with ema
User.findOne()不是函数
我的模式是正确的。。。请帮助您需要(如果您还没有)使用模型创建数据实例,如
passport.use('local-signup', new LocalStrategy({
// by default, local strategy uses username and password, we will override with email
usernameField : 'email',
passwordField : 'password',
passReqToCallback : true // allows us to pass back the entire request to the callback
},
(req, email, password, done) => {
// asynchronous
// User.findOne wont fire unless data is sent back
process.nextTick(() => {
// find a user whose email is the same as the forms email
// we are checking to see if the user trying to login already exists
User.findOne({ 'email' : email },function(err, user){
// if there are any errors, return the error
if (err)
return done(err);
// check to see if theres already a user with that email
if (user) {
return done(null, false, {'errorMessages': 'That email is already taken.'});
} else {
// if there is no user with that email
// create the user
let newUser = new User();
// set the user's local credentials
newUser.name = req.body.fullname;
//newUser.email = email;
newUser.password = newUser.generateHash(password);
// save the user
newUser.save((err)=>{
if (err)
return done(err);
return done(null, newUser);
});
}
});
});
}));
现在您应该可以在这里使用.findOne
并确保在一个集合中为日期定义结构,如
var UserDetails = mongoose.model('userInfo', UserDetail);
我也遇到过这样的情况:
var Schema = mongoose.Schema;
var UserDetail = new Schema({
username: String,
password: String
}, {
collection: 'userInfo'
});
返回“findOne不是函数”
但通过改为:
const User = require('../../mongoose/User');
User.findOne(...);
…成功了。
希望我帮助了别人 可能您没有从用户模型文件夹导出模型。
如:
module.exports=User=mongoose.model(“用户”,UserSchema) 请使用下面的代码
var User = require('../../mongoose/User');
User.findOne(...);
User应该是模型名,记住在顶部定义constUserSchema=newschema
,以便在MongoDB和
用户应该知道您所在的路线
module.exports = User = mongoose.model('user', UserSchema)
这样,您就可以将mongoose模式导出到route用户,这将使findOne
被视为mongoose函数。从名为user.js的文件中从模型目录导出用户模型。
router.post('/user') (req, res) => { code here }
然后从任何其他加载用户模型
module.exports.User = User
注意:我假设用户模型文件名为user.js在我的例子中,我这样定义用户↓
const {User} = require('../models/user.js');
而不是↓
const User = '../../models/User'
使用
而不是
module.exports = User = mongoose.model("users", UserSchema);
import User from '../db/models/user';
这是导出和导入模型的方式。如果您将模型定义为constuser=mongoose.model(“用户”,UserSchema)
然后通过导出默认用户导出代码>。您应使用以下命令导入该文件:
module.exports = User => mongoose.model("users", UserSchema);
而不是
module.exports = User = mongoose.model("users", UserSchema);
import User from '../db/models/user';
User.findOne不是函数错误
就我而言:
正确语法:
const User=require('../../models/User')//已纠正
由于VS代码自动格式化,我的导入更改为以下格式,因此发生错误
const User=require-'../../models/User'
:-虽然此导入是罪魁祸首,但VS代码仍然验证了此导入
您可以尝试以下方法:
const User = require('../db/models/user');
我们应该如何知道用户是什么?为什么-1?请给出一个解释,说明原因。你能给我举一个关于postgresql的kexjs的例子吗?我遇到了相同的错误用户。findone不是一个函数,我不知道从哪里开始寻找这个问题抱歉@Sasharonov。我不知道如何在postgresql上获取它。但是请确保您正在使用获取模型。findOne
这意味着您不是将用户定义为模型,而是将其定义为字符串,不是吗?