使用邮递员将数据插入数据库时​​,在控制器文件中显示错误

Posted

技术标签:

【中文标题】使用邮递员将数据插入数据库时​​,在控制器文件中显示错误【英文标题】:while inserting data to database using postman showing error in controller file 【发布时间】:2020-06-02 19:11:18 【问题描述】:

在使用 node.js 时,我无法将数据插入到数据库中,我正在使用 express.js,mongoose,但出现了我在代码中作为注释提到的错误

块引用 错误是 块引用 TypeError:无法读取未定义的属性“名称” 插入时(E:\node\website\controller\signup.js:5:25) 在 Layer.handle [as handle_request] (E:\node\website\node_modules\express\lib\router\layer.js:95:5) 在下一个(E:\node\website\node_modules\express\lib\router\route.js:137:13) 在 Route.dispatch (E:\node\website\node_modules\express\lib\router\route.js:112:3) 在 Layer.handle [as handle_request] (E:\node\website\node_modules\express\lib\router\layer.js:95:5) 在 E:\node\website\node_modules\express\lib\router\index.js:281:22 在 Function.process_params (E:\node\website\node_modules\express\lib\router\index.js:335:12) 在下一个 (E:\node\website\node_modules\express\lib\router\index.js:275:10) 在 Function.handle (E:\node\website\node_modules\express\lib\router\index.js:174:3) 在路由器 (E:\node\website\node_modules\express\lib\router\index.js:47:12) 在 Layer.handle [as handle_request] (E:\node\website\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix (E:\node\website\node_modules\express\lib\router\index.js:317:13) 在 E:\node\website\node_modules\express\lib\router\index.js:284:7 在 Function.process_params (E:\node\website\node_modules\express\lib\router\index.js:335:12) 在下一个 (E:\node\website\node_modules\express\lib\router\index.js:275:10) 在 expressInit (E:\node\website\node_modules\express\lib\middleware\init.js:40:5) 在 Layer.handle [as handle_request] (E:\node\website\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix (E:\node\website\node_modules\express\lib\router\index.js:317:13) 在 E:\node\website\node_modules\express\lib\router\index.js:284:7 在 Function.process_params (E:\node\website\node_modules\express\lib\router\index.js:335:12) 在下一个 (E:\node\website\node_modules\express\lib\router\index.js:275:10) 查询时(E:\node\website\node_modules\express\lib\middleware\query.js:45:5) 块引用 //控制器文件命名为signup.js

var express=require('express');
var post1=require('../model/singup')
var router=express.Router();
var insert=(req,res)=>
    var name1= req.body.name;// error:name is not defined
    var email1= req.body.email;//error:email is not defined
    var password1= req.body.password;//error:password is not defined
    post1.create(
        name: name1,email:email1,password:password1
    ,(err,result)=>
        if(err)res.json(message:'error'
           )
        
        elseres.json(message:'sucessful',result:result   
        )
      
)

router.post('/signup',insert);
router.get('/h',(req,res)=>
    res.json( 
        message:'insert'
    )
    console.log("insert");
    )
module.exports=router;

块引用 //模型文件命名为signup.js

require('../db');
var mongoose=require('mongoose');
mongoose.Promise=require('bluebird');
var schema= new mongoose.Schema(
    name:type:String,required:true,
    email:type:String,required:true,
    password:type:String,required:true,   
,
timestamp:true);
module.exports=mongoose.model('post1',schema);

块引用 //用于数据库连接的db.js文件

var mongose=require('mongoose');
mongose.set('useNewUrlParser', 'true');
mongose.set('useCreateIndex', 'true');
mongose.set('useFindAndModify', 'true');
mongose.connect("mongodb://127.0.0.1:27017/website");
var db=mongose.connection;
db.on('error',console.error.bind(console,'connection error'));
db.once('open',(req,res)=>
    console.log("connected with db!!!");
)

块引用 //index.js

var app=require('./server')
var signup=require('./controller/signup')

 var session=require('express-session')
app.set('viewengin','ejs')
app.set('useNewUrlParser', 'true')
app.set('useUnifiedTopology', 'true')
app.use('/user',signup)
app.use(session(
    secret:'keyboard cat ',
    resave:false,
    cookies:
        secrue:true
    ,
))
app.all('*',(req,res)=>
    return res.json(status: 205,message: 'not found');
)
var server=app.get('/',(req,res)=>
req.end()
);

【问题讨论】:

【参考方案1】:

您似乎缺少 body-parser 中间件。

$ npm i body-parser
var express=require('express');
var bodyParser = require('body-parser');

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded( extended: false ))

// parse application/json
app.use(bodyParser.json())

【讨论】:

以上是关于使用邮递员将数据插入数据库时​​,在控制器文件中显示错误的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB - 邮递员出错 - 数据发送失败

使用邮递员将文件发送到 Laravel API

数据存储模拟器查询/问题

将json插入postgreSQL

Java - 如何使用邮递员插入数据

发布邮递员表单数据时请求正文为空