Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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 护照猫鼬对象#<;模式>;没有方法';验证';然而,我可以看到这种方法_Javascript_Node.js_Mongodb_Mongoose_Mongoose Plugins - Fatal编程技术网

Javascript 护照猫鼬对象#<;模式>;没有方法';验证';然而,我可以看到这种方法

Javascript 护照猫鼬对象#<;模式>;没有方法';验证';然而,我可以看到这种方法,javascript,node.js,mongodb,mongoose,mongoose-plugins,Javascript,Node.js,Mongodb,Mongoose,Mongoose Plugins,我遇到了一个毫无意义的问题,我不知道希望有人能帮助我 我正在使用一些mongoose插件,现在也在尝试集成passport。我已经添加了passport本地mongoose插件,如下所示,但我得到的错误是该方法不存在。当将模式注销到控制台时,我可以看到列出的方法,因此我不确定它为什么不存在 代码示例: var mongoose = require('mongoose'); var timestamps = require('mongoose-timestamp'); var autoIncrem

我遇到了一个毫无意义的问题,我不知道希望有人能帮助我

我正在使用一些mongoose插件,现在也在尝试集成passport。我已经添加了passport本地mongoose插件,如下所示,但我得到的错误是该方法不存在。当将模式注销到控制台时,我可以看到列出的方法,因此我不确定它为什么不存在

代码示例:

var mongoose = require('mongoose');
var timestamps = require('mongoose-timestamp');
var autoIncrement = require('mongoose-auto-increment');
var passport = require('passport');
var passportLocalMongoose = require('passport-local-mongoose');
var BasicStrategy = require('passport-http').BasicStrategy;

var usersSchema = new mongoose.Schema({
  firstName: String,
  lastName: String,
  email: String,
  organizationId: Number,
  description: String
});

module.exports = function(app,db){
  //mongoose setup options
  usersSchema.plugin(timestamps);  
  usersSchema.plugin(autoIncrement.plugin, { model: 'Users', field: 'id' });

  //passport authentication setup
  usersSchema.plugin(passportLocalMongoose);
  var Users = db.model('Users', usersSchema);
  console.log(usersSchema);

  passport.use(new BasicStrategy(usersSchema.authenticate()));
控制台日志摘录如下:

methods:
 { nextCount: [Function],
   resetCount: [Function],
   setPassword: [Function],
   authenticate: [Function] },
statics:
 { nextCount: [Function],
   resetCount: [Function],
   authenticate: [Function],
   serializeUser: [Function],
   deserializeUser: [Function],
   register: [Function],
   findByUsername: [Function],
   createStrategy: [Function] },
但我得到了以下错误:

passport.use(new BasicStrategy(usersSchema.authenticate()));
                                             ^
TypeError: Object #<Schema> has no method 'authenticate'
passport.use(新的基本策略(usersSchema.authenticate());
^
TypeError:对象#没有“身份验证”方法

我可以看到这个方法是可用的,为什么我不能访问它呢。我很抱歉,如果我错过了一些基本的东西,我仍然在学习这些东西。感谢您的帮助。

验证方法是在模型上定义的,而不是在架构上定义的-

passport.user(new  BasicStrategy(Users.authenticate());

我建议您使用节点检查器来检查节点中的请求流。会让你更深入地了解事物是如何运作的。