插入mongo数据库时504错误

时间:2016-12-11 09:20:38

标签: node.js mongodb passport.js

当使用带有nodejs的passportjs时,尝试插入数据库时​​出现504错误。

mongo数据库由应用程序服务器外部托管,应用程序位于反向代理后面(反向代理将应用程序端口转换为端口80)。

只有在尝试插入mongo文档时才会出现此问题:

passport.use(new GoogleStrategy({
    clientID: "client_id",
    clientSecret: "client_secret",
    callbackURL: "oauth_url_callback"
  },
  function(accessToken, refreshToken, profile, done) {
    passport.serializeUser(function(user,done){
      mongo.connect(url, function(err,db){
        if(err){
          console.log(err, ' was the err');

          fs.open('views/debug/debug.txt', 'rw', 'a+', function(err,data){
            fs.writeFileSync('views/debug/debug.txt', err);
          });

          done(err);
        } else {
          db.collection('users').find({profile:profile}, function(err, user) {
            if (err) {
              fs.open('views/debug/debug.txt', 'rw', 'a+', function(err,data){
                fs.writeFileSync('views/debug/debug.txt', err);
              });

              db.collection('users').insertOne({profile:profile, name:"John Doe"}, function(err, user){
                if(err){
                  console.log("failed to insert", err);
                } else {
                  console.log('Registered a new user!');
                }
              });
            } else {
              console.log('We have a returning user!');
            }

            console.log('testing');

            fs.open('views/debug/debug.txt', 'rw', 'a+', function(err,data){
              fs.writeFileSync('views/debug/debug.txt', err);
            });

            done(null, user);
          });
        }
      });
    });
  }
));

我不确定为什么会发生这种情况,但只有在您尝试插入数据库时​​才会发生。当我刷新页面时,它没有504,因为它返回一个错误,表示令牌已经过期。

我也尝试记录错误,似乎没有错误。我用stdout和stderror作为提取输出的参数开始这个过程但是没有用。

它也没有将文档/项插入到奇怪的数据库中。

1 个答案:

答案 0 :(得分:0)

事实证明我在两个回调中都重载了完成函数两次。我分别定义了每个并分别调用它们。