Mongo使用护照身份验证创建用户错误

时间:2015-06-26 17:45:54

标签: node.js mongodb mongoose passport.js mean-stack

我正在使用MEAN.IO堆栈(使用Mongoose的默认模板)和Passport.js身份验证来创建新用户。每当在下面的代码中调用user.save(...)时:

// Use Facebook strategy
passport.use(new FacebookStrategy({
    clientID: config.strategies.facebook.clientID,
    clientSecret: config.strategies.facebook.clientSecret,
    callbackURL: config.strategies.facebook.callbackURL
  },
  function(accessToken, refreshToken, profile, done) {
    User.findOne({
      'facebook.id': profile.id
    }, function(err, user) {
      if (user) {
        return done(err, user);
      }
      user = new User({
        name: profile.displayName,
        email: profile.emails[0].value,
        provider: 'facebook',
        facebook: profile._json,
        roles: ['authenticated']
      });
      user.save(function(err) {
        if (err) {
          console.log(err);
          return done(null, false, {message: 'facebook login failed, email already used by other login strategy'});
        } else {
          return done(err, user);
        }
      });
    });
  }
));

控制台记录以下错误:

MongoError: attempt to use unsupported textIndexVersion 2, only textIndexVersion 1 supported

我看过网上并通过MEAN.IO堆栈代码找不到任何关于如何更改textIndexVersion的内容。

有关如何更改版本或修复此错误的任何想法吗?

1 个答案:

答案 0 :(得分:1)

根据Mongo的错误报告:

  

mongod v2.4.9将正确禁止对具有。的集合进行更改   与2.4不兼容的文本索引。尝试插入,更新,   或删除这些集合中的文档将返回错误消息   "尝试使用不受支持的textIndexVersion 2,仅使用textIndexVersion   1支持"。

https://jira.mongodb.org/browse/SERVER-11494

我建议更新您的Mongo版本以与v2.4.9兼容