RethinkDB, ReferenceError: connection is not defined

RethinkDB, ReferenceError: connection is not defined

我正在使用 Express.jsRethink 并且我正在尝试对一条路由进行简单的 post 操作,将一些信息保存到 database.The 初始连接工作正常并记录到控制台 Connected to Rethink 但是,当我尝试使用与 insert 的连接时,我一直收到 ReferenceError: connection is not defined。这是代码:

var express = require('express');
var app = express();
var r = require('rethinkdb');
var bodyParser = require('body-parser');
var session = require('express-session');
var bcrypt = require('bcryptjs');

function dbConnect(){
  var connection = null;
  r.connect({host: 'localhost', port: 28015}, function(err, conn){
    if (err){
      throw err;
    }else{
      connection = conn;
      console.log("Connected to Rethink");
    }
  });
}
dbConnect();

app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(bodyParser.json());
app.use(session({secret: 'gitTy Up!',resave: false,saveUninitialized:true}));
app.use(require('connect-flash')());


app.set('view engine','ejs');

//Home Page
app.get('/', function (req, res) {      
  res.render('home');
})

app.get('/join', function (req, res) {
  res.render('join');
})

app.post('/join',function(req, res){    
  var salt = bcrypt.genSaltSync(10);
  r.table('users').insert([{email: req.body.email, password: bcrypt.hashSync(req.body.password, salt)}])
    .run(connection, function(err,result) {
      if (err) throw err;
      console.log(JSON.stringify(result, null, 2));
    })
});
app.listen(3000);

这是范围问题。 Connection 在范围内是本地的,您正在尝试访问它,就好像它是全局的一样。变化:

var express = require('express');
var app = express();
var r = require('rethinkdb');
var bodyParser = require('body-parser');
var session = require('express-session');
var bcrypt = require('bcryptjs');

function dbConnect(){
  var connection = null;
  r.connect({host: 'localhost', port: 28015}, function(err, conn){
    if (err){
      throw err;
    }else{
      connection = conn;
      console.log("Connected to Rethink");
    }
  });
}`

var express = require('express');
var app = express();
var r = require('rethinkdb');
var bodyParser = require('body-parser');
var session = require('express-session');
var bcrypt = require('bcryptjs');
var connection = null;
function dbConnect(){

  r.connect({host: 'localhost', port: 28015}, function(err, conn){
    if (err){
      throw err;
    }else{
      connection = conn;
      console.log("Connected to Rethink");
    }
  });
}