【问题标题】:insomnia -- Cannot read property 'post' of undefined失眠——无法读取未定义的属性“帖子”
【发布时间】:2017-07-28 14:03:27
【问题描述】:
var express = require('express');
var path = require('path');
var app = express();
var mongoose = require('mongoose');
var bodyparser = require('body-parser');

mongoose.Promise = require('bluebird');
mongoose.connect("mongodb://makja:q1w2e3r4@ds111123.mlab.com:11123/makja" , { useMongoClient: true });

var db = mongoose.connection;
db.once("open", function () {
  console.log("DB on!");
});
db.on("error", function (err) {
  console.log("DB error : " , err);
});

var dataSchema = mongoose.Schema({
  name:String,
  count:Number
});

var postSchema = mongoose.Schema({
  title : {type:String, required:true},
  body : {type:String, required:true},
  createdAt : {type:Date, default:Date.now},
  updatedAt : Date
});
var Post = mongoose.model('post',postSchema);

app.get('/posts', function(req , res){
  Post.find({}, function(err,posts){
    if (err) return res.json({success:false, message:err});
    res.json({success:true, data:posts});
  });
});
app.post('/posts', function(req , res){
  Post.create(req.body.post, function(err,post){
    if (err) return res.json({success:false, message:err});
    res.json({success:true, data:post});
  });
});

var Data = mongoose.model('data',dataSchema);
Data.findOne({name:"myData"},function(err,data){
  if (err) return console.log("Data error",err);
  if (!data) {
    Data.create({name:"myData",count:0},function(err,data){
      if (err) return console.log("Data error:",err);
      console.log("counter initalized:",data);
    });
  }
});

app.set("view engine",'ejs');
app.use(express.static(path.join(__dirname,'public')));
app.use(bodyparser.json());

app.get('/',function(req , res) {
  Data.findOne({name:"myData"}, function(err,data){
    if(err) return console.log("Data error: ",err);
    data.count++;
    data.save(function(err){
      if(err) return console.log("Data error: ",err);
      res.render('my_first_ejs',data);
    });
  });
});

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

app.listen(8000, function(){`enter code here`
  console.log('Server On!');
});

cmd错误-------------------

TypeError: Cannot read property 'post' of undefined
    at C:\nodejs\index.js:38:23
    at Layer.handle [as handle_request] (C:\nodejs\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\nodejs\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\nodejs\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\nodejs\node_modules\express\lib\router\layer.js:95:5)
    at C:\nodejs\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (C:\nodejs\node_modules\express\lib\router\index.js:335:12)
    at next (C:\nodejs\node_modules\express\lib\router\index.js:275:10)
    at expressInit (C:\nodejs\node_modules\express\lib\middleware\init.js:40:5)
    at Layer.handle [as handle_request] (C:\nodejs\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (C:\nodejs\node_modules\express\lib\router\index.js:317:13)
    at C:\nodejs\node_modules\express\lib\router\index.js:284:7
    at Function.process_params (C:\nodejs\node_modules\express\lib\router\index.js:335:12)
    at next (C:\nodejs\node_modules\express\lib\router\index.js:275:10)
    at query (C:\nodejs\node_modules\express\lib\middleware\query.js:44:5)
    at Layer.handle [as handle_request] (C:\nodejs\node_modules\express\lib\router\layer.js:95:5)

【问题讨论】:

  • 如果您在此处发布一个最小、完整且可验证的示例,您更有可能得到一个好的答案。像这样:stackoverflow.com/help/mcve。就目前而言,很难看到您想知道的内容。
  • 在 SO 上发布 mongodb 凭据不是一个好主意。

标签: html nodemon


【解决方案1】:

确保您的 bodyparser 在处理您的 POST 之前实际上正在解析 body 并将 body 附加到 req。

--> app.use(bodyparser.json());

var app = require('express')();
var bodyParser = require('body-parser');
app.post('/', (req, res) =>{
    console.log(req.body); //undefined
    res.json(req.body).status(200);
})
app.use(bodyParser.json());
app.listen(3000);

====

var app = require('express')();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.post('/', (req, res) =>{
    console.log(req.body); //attaches correctly
    res.json(req.body).status(200);
})

app.listen(3000);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2019-10-27
    • 2021-06-29
    • 2019-01-17
    • 2020-06-16
    • 2016-07-06
    • 1970-01-01
    相关资源
    最近更新 更多