Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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 Node.js Mongodb集成问题。保存()_Javascript_Node.js_Mongodb_Express - Fatal编程技术网

Javascript Node.js Mongodb集成问题。保存()

Javascript Node.js Mongodb集成问题。保存(),javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,这是我用basic Node.js服务器创建的一个示例站点。我能够成功发布、创建给定模式的用户并“保存”到数据库;但是,保存不会返回用户对象,并且在我的实际数据库中找不到。连接也会返回为成功 main.js const session = require('express-session'); const pug = require('pug'); const mongoose = require('mongoose'); const bodyParser = require('body-par

这是我用basic Node.js服务器创建的一个示例站点。我能够成功发布、创建给定模式的用户并“保存”到数据库;但是,保存不会返回用户对象,并且在我的实际数据库中找不到。连接也会返回为成功

main.js

const session = require('express-session');
const pug = require('pug');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const User = require('./schema.js');
const app = express();

var path = require('path');

const MongoClient = require('mongodb').MongoClient;
const client = new MongoClient('mongodb://localhost:27017');
var db;

client.connect((err, client) => {
  if (err) {
    console.log(err);
  }
  else if (!err) {
    db = client.db('node');
    console.log('Connected to Mongodb');
    client.close()
  }
});

app.engine('pug', require('pug').__express)
app.set('view engine', 'pug');
app.use(bodyParser.urlencoded({ extended : true }));
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, 'styles')));
app.use(session({secret: 'testing',saveUninitialized: true,resave: true}));

//root directory get response
app.get('/', (req, res) => {
  res.render('homepage', {
  title : 'Homepage',
  req : req
  });
});

//register directory get response
app.get('/register', (req, res) => {
  res.render('register', {
  title : 'Register',
  req: req
  });
});

//profile directory get response
app.get('/profile', (req, res) => {
  res.render('profile', {
    title: 'Profile',
    email: req.session.email,
    username: req.session.username,
    req: req
  });
});

//login directory get response
app.get('/login', (req, res) => {
  res.render('login', {
    title: 'Login',
    req: req
  })
})

//register directory post request
app.post('/register', (req, res) => {
  console.log(req.body);
  if(req.body.username && req.body.email && req.body.password){
    var user = User({
      email : req.body.email,
      username : req.body.username,
      password : req.body.password
    });
  console.log(user);
  user.save((err) => {
    user.markModified('password')
    console.log("Trying to save")
    console.log(user)
    if(err){
      console.log(err);
    } else {
      var sess = req.session;
      sess.email = req.body.email;
      console.log("Saved")
      res.redirect('/profile')
      }
    });
  }
});

//login directory post request
app.post('/login', (req, res) => {
  console.log(req.body);
  if(req.body.username && req.body.password){
    var sess = req.session;
    sess.username = req.body.username;
    res.redirect('/profile')
  }
})

const server = app.listen(8000, () => {
  console.log(`Express running → PORT ${server.address().port}`);
});
schema.js

const bcrypt = require('bcrypt');

var UserSchema = new mongoose.Schema({
  email: {
    type: String,
    unique: true,
    required: true,
    trim: true
  },
  username: {
    type: String,
    unique: true,
    required: true,
    trim: true
  },
  password: {
    type: String,
    unique: false,
    required: true,
    trim: true
  }
});

UserSchema.pre('save', function(req, err, next) {
  var user = this;
  bcrypt.genSalt(10, (err, salt) => {
    if(err){
      return next(err);
    }
    bcrypt.hash(user.password, salt, (err, hash) => {
      if(err){
        return next(err);
      }
      user.password = hash;
      console.log(hash);
      next()
    });
  });
});

var User = mongoose.model('User', UserSchema);
module.exports = User;

试试这个
var user=newuser({…})而不是这个
var user=user({…})。注意
new
关键字

试试这个
var user=new user({…})而不是这个
var user=user({…})。注意
new
关键字

您正在使用mongoose创建模型并进行db查询,但未连接到mongoose。而是连接到MongoDb本机驱动程序

替换这个

const MongoClient = require('mongodb').MongoClient;
const client = new MongoClient('mongodb://localhost:27017');
var db;

    client.connect((err, client) => {
      if (err) {
        console.log(err);
      }
      else if (!err) {
        db = client.db('node');
        console.log('Connected to Mongodb');
        client.close()
      }
    });


您正在使用mongoose创建模型并进行db查询,但未连接到mongoose。而是连接到MongoDb本机驱动程序

替换这个

const MongoClient = require('mongodb').MongoClient;
const client = new MongoClient('mongodb://localhost:27017');
var db;

    client.connect((err, client) => {
      if (err) {
        console.log(err);
      }
      else if (!err) {
        db = client.db('node');
        console.log('Connected to Mongodb');
        client.close()
      }
    });


const-mongoose=require('mongoose')
出现在schema中。js
const-mongoose=require('mongoose')
出现在schema.jsAh中,谢谢;但是,从POST创建的用户对象保存为索引,而不是mongo下的对象。有什么想法吗?啊,谢谢你;但是,从POST创建的用户对象保存为索引,而不是mongo下的对象。有什么想法吗?