【发布时间】:2018-01-16 06:18:30
【问题描述】:
我是 nodejs 和 mongodb 的初学者。我正在使用 mongoose ORM 和模型将数据插入到集合中,但不插入。验证工作正常,但填充完整数据后未插入数据。我没有手动在数据库中创建集合。我应该在 mongodb 中手动创建集合还是在插入文档时自动创建。
产品控制器
var mongoose = require('mongoose');
var db = require('../config/db_config');
var Product = require('../models/product');
//var Product = mongoose.model('Products');
var productController = {};
productController.add = function(req, res) {
var params = req.body;
if(!params) {
res.status(400).send({message: "Data can not be empty"});
}
var productData = new Product({
product_name : params.product_name,
price : params.price,
category : params.category
});
console.log(productData);
productData.save(function(err, product) {
if (err){
res.status(400).send({message:'Unable to save data! ' + err});
}else{
res.status(200).send({message:'Data has been saved! ' + product });
}
});
};
module.exports = productController;
模型代码在这里
var mongoose = require('mongoose');
var db = require('../config/db_config');
var Schema = mongoose.Schema;
var productSchema = new Schema({
product_name: { type: String, required: 'Product name cannot be left blank.' },
price: { type: String, required: 'Product price cannot be left blank.'},
category: { type: String , required: 'Product category cannot be left blank'},
updated_at : {type: Date, default: Date.now}
});
module.exports = mongoose.model('Products', productSchema);
路由文件代码在这里:
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Product = require('../models/product.js');
var productsController = require('../controllers/productsController');
router.post('/add',productsController.add);
module.exports = router;
数据库配置文件
var mongoose = require('mongoose');
mongoose.Promise = global.Promise;
var db = mongoose.createConnection('mongodb://localhost:27017/nodeweb', function(err,db){
if(err){
throw err;
console.log(err);
} else {
console.log('Successfully connected to database!');
}
});
module.exports = db;
我有插入控制器、模型和路由文件代码。
【问题讨论】:
-
错误是什么?
-
@Bunny 错误:Route.get() 需要回调函数但在 Route.(匿名函数) [as get] (/var/www/html/nodejs/nodeweb/ node_modules/express/lib/router/route.js:202:15)
-
@OmodemiladeBamgbose 我已将必需更改为必需,但仍然无法正常工作。
-
你能展示一下整个路由器文件吗?似乎错误在那里。
-
@ArtemBardachov var express = require('express'); var router = express.Router(); var 猫鼬 = 要求('猫鼬'); var Product = require('../models/product.js'); var productsController = require('../controllers/productsController'); router.get('/products',productsController.products); router.post('/add',productsController.add); module.exports = 路由器;
标签: node.js mongodb express mongoose