【发布时间】:2020-01-02 12:51:46
【问题描述】:
你好,我是 nodejs 的新手,并试图在 mongodb 中插入数据,但它没有插入,并且没有显示错误,并且在页面提交上显示“无法 POST /crud”,任何解决它的参考或建议(记住没有显示错误)
架构(Crud.js):
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/node_web', {useNewUrlParser: true});
var crudSchema = new mongoose.Schema({
crud_name: {
type: String
},
crud_email: {
type: String
},
crud_mobile: {
type: String
}
});
mongoose.model('Crud', crudSchema );
创建.ejs:
<form method="POST" action="/crud">
<div class="form-group">
<label for="inputAddress">Name</label>
<input type="text" name="crud_name" class="form-control" id="inputAddress" placeholder="Enter your name">
</div>
<div class="form-group">
<label for="inputAddress">Email</label>
<input type="email" name="crud_email" class="form-control" id="inputAddress" placeholder="Enter your email">
</div>
<div class="form-group">
<label for="inputAddress">Mobile</label>
<input type="number" name="crud_mobile" class="form-control" id="inputAddress" placeholder="Enter your mobile">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
控制器:
const express = require('express');
var router = express.Router();
const mongoose = require('mongoose');
const Crud = mongoose.model('Crud');
router.get('/',(req, res) => {
res.render("crud", {crud : new Crud(), newCrud : true});
});
router.post('/', (req, res) => {
if (true)
insertRecord(req, res);
});
function insertRecord(req, res) {
var crud = new Crud();
crud.crud_name = req.body.crud_name;
crud.crud_email = req.body.crud_email;
crud.crud_mobile = req.body.crud_mobile;
// Save methods
crud.save((err, doc) => {
if (!err)
res.redirect('crud');
else {
console.log('Error during record insertions : ' + err);
}
});
}
db连接成功:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/node_web', {useNewUrlParser: true});
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function(err) {
if (err) throw err;
console.log('Successfully connected');
});
【问题讨论】:
-
你的 node.js 代码在哪里?我不确定,但是否可以请求模型文件在数据库中输入数据。你必须创建一个指向一个函数的路由,它会调用你的模式来发送数据,如果我错了,请告诉我这个
-
@sayalok 抱歉,我忘了添加控制器
-
@pro 你需要将保存对象传递给
var crud = new Crud({a:req.body.a, b:req.body.b})这样的模型构造函数,并且路由定义也不正确,应该是router.post('/crud') -
@ambianBeing 很抱歉,你能不能给我一个合适的答案,因为我是新手,不知道更多
标签: javascript node.js mongodb mongoose node-modules