使用 mongoose 将表单数据插入 mongodb 时出现莫名其妙的行为

Posted

技术标签:

【中文标题】使用 mongoose 将表单数据插入 mongodb 时出现莫名其妙的行为【英文标题】:Inexplicable behaviour while inserting form data to mongodb using mongoose 【发布时间】:2018-07-09 13:25:29 【问题描述】:
    var express = require('express');
    var router = express.Router();
    var mongoose = require('mongoose');
    mongoose.connect('mongodb://127.0.0.1/shopper');

    var Schema = mongoose.Schema;
    //give constriants of schema and columns
    var productSchema =Schema(

        product_Name : String ,
        product_Description :String ,
        product_price : Number ,
        product_logo :String   

    );
    //create model of the schema 
     var product = mongoose.model('product',productSchema)

module.exports = router.post('/AddProduct',function(req,resp)

    console.log(req.body);

//create schema

 var newproduct = new product(

    product_Name : req.body.product_Name ,
    product_Description : req.body.product_Description ,
    product_price : req.body.product_price,
    product_logo : req.body.product_logo 
 );
console.log(newproduct);
newproduct.save(function(err)
    if(err) console.log("insertion failed");
);
    resp.status(200).redirect('./add-Product-form/');


);

console.log(req.body);

 product_Name: 's',
  product_description: 'ydtdh',
  product_price: '232',
  product_logo: 'error.png' 

console.log(新产品)

 _id: 5a6ffc303df3d62e0451dd12,
  product_Name: 's',
  product_price: 232,
  product_logo: 'error.png' 

为什么当我设置正确或遗漏某些东西时会发生这种异常情况。当文档插入到 mongodb 时,缺少一列

【问题讨论】:

【参考方案1】:

req.body 返回:

 product_Name: 's',
  product_description: 'ydtdh',
  product_price: '232',
  product_logo: 'error.png' 

字段product_description 应该是product_Description。 这只是架构区分大小写

的问题

【讨论】:

我认为这个答案是正确的,但您需要明确说明:区分大小写很重要。【参考方案2】:

在您的表单中将名称为product_descriptiontextareainput 元素更改为product_Description(注意Description 中的大写D),然后直接执行:

var newproduct = new product(req.body);
newproduct.save(function(err)  ...  );

或者使用创建方法:

Product.create(req.body, function (err, newProduct)  ... );

【讨论】:

以上是关于使用 mongoose 将表单数据插入 mongodb 时出现莫名其妙的行为的主要内容,如果未能解决你的问题,请参考以下文章

使用 mongoose 将表单数据插入 mongodb 时出现莫名其妙的行为

使用 mongoose 在 MongoDB 中批量插入

mongo+mongoose+express

Express nodejs不使用带表单数据的mongoose插入数据

使用Mongoose(ORM)将多个应用程序与一个mongo数据库连接

mongoose查询数据库步骤