使用 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_description
的textarea
或input
元素更改为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 时出现莫名其妙的行为
Express nodejs不使用带表单数据的mongoose插入数据