无法通过Express& amp存储新用户猫鼬

时间:2017-06-02 23:47:54

标签: javascript node.js express

我正在尝试使用express创建用户。 我正在通过Postman通过以下网址在param URL上发送所有新用户数据的POST请求:

localhost:3000/users/register?first_name=1&last_name=1&email=1&password=123456&country=1&city=1&street=1&number=1

我在控制台上收到此错误:

  

有一个erorrError:非法参​​数:undefined,string

在我创建student.js的模型文件夹中,它是一个用户。

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const bcrypt = require('bcryptjs');


const StudentSchema = new Schema({
    first_name: String,
    last_name: String,
    email:{
        type: String,
        required: true,
        unique: true
    },
    password: {
        type: String,
        required: true
    },
    address:
        {   country: String,
            city: String,
            street: String,
            number: Number
        },
    created_at: Date,
    updated_at: Date
});
StudentSchema.pre('save', function(next) {
    var currentDate = new Date();
    this.updated_at = currentDate;
    if (!this.created_at)
        this.created_at = currentDate;

    next();
});
var Student = mongoose.model('Student', StudentSchema);
module.exports = Student;

module.exports.addStudent = function(newStudent, callback){
    bcrypt.genSalt(10, function(err, salt) {
        bcrypt.hash(newStudent.password, salt, function(err, hash) {
            if(err) {
                console.log(hash);
                **console.log("There was an erorr" + err);**
            }else {
                newStudent.password = hash;
                newStudent.save(callback);
            }
        });
    });
};

在routes文件夹中,用户路由器:

var express = require('express');
var router = express.Router();
var Student = require('../models/student');
var mongodb = require('mongodb');

router.post('/register', function(req, res, next) {
    var newStudent =new Student( {
        first_name: req.body.first_name,
        last_name: req.body.last_name,
        email: req.body.email,
        password: req.body.password,
        address:
            {
                country: req.body.country,
                city: req.body.city,
                street: req.body.street,
                number: req.body.number
            }
    });

    Student.addStudent(newStudent, function(err,user) {
    if(err){
        res.json({success: false, msg:'Failed to register user'});
    } else {
        res.json({success: true, msg:'User registered'});
    }
    });
});

router.get('/newstudent', function(req, res) {
    res.render('newstudent', { title: 'Add student' });
});

module.exports = router;

我用" **"

推销了代码行制动器

1 个答案:

答案 0 :(得分:0)

您使用查询参数(显示在网址中)发送邮件中的数据,并期望在req.body中提取数据。

您可以更改其中一个(在邮递员发送请求正文中,或者在快递中提取查询参数),但不建议在URL中以类似的用户名/密码发送敏感数据,因为它&# 39;可见且不太安全。

所以你应该改变你在Postman中发送数据的方式,如下所示:

enter image description here