Nodejs and Mongoose



我正试图在Node和Mongoose的帮助下开发一个CRUD应用程序。因此,我创建了一个联系人表单,用户可以在其中输入他的电子邮件、主题和文本。到目前为止,我可以输入一些数据,这些数据被保存到我的数据库中,之后数据也会显示在同一页面上。

现在我正在使用更新功能。我还为更新创建了一个额外的表单,用户可以在其中输入ID并更改DB中的数据。现在我已经创建了一个显示数据的表。对于更新,我想在每行之后添加另一个列更新。如果用户点击表中的更新,数据应该自动输入到我的输入字段中,所以用户只需要更改他的电子邮件等,然后提交。到目前为止,用户必须复制ID,然后更新我想删除的条目。

我的文件:

contact.js

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
mongoose.connect('mongodb://admin:admin@vm-uum-docker:27000/contact_form?authSource=admin');
var Schema = mongoose.Schema;
var contactForm = new Schema({
email: {type: String, required: true},
subject: {type: String, required: true},
text: String
});
var Form = mongoose.model('Contact', contactForm);
/* GET users listing. */
router.get('/', function(req, res, next) {
//    res.render('contact');
Form.find({}, (err, entries) => {
if (err)
res.send(err);
res.render('contact', {entries:entries});
});

});
router.post('/', function(req, res, next) {
var item = {
email: req.body.email,
subject: req.body.subject,
text: req.body.text
}
var data = new Form(item);
function valideEmail(email){
var re = /S+@S+.S+/;
return re.test(email);
}
if (valideEmail(req.body.email)){
console.log('Email is valid! Data will be saved into the DB');
data.save();
//res.render('contact')
res.redirect('/contact');
} else {
console.log('Email isn`t valid. Please try another mail!');
}
});
router.post('/update', function(req, res, next) {
var id = req.body.id;
Form.findById(id, function(err, doc) {
if (err) {
console.error('error, no entry found');
}
doc.email = req.body.email;
doc.subject = req.body.subject;
doc.text = req.body.text;
doc.save();
res.redirect('/contact');
})

});


module.exports = router;

联系人.pug

doctype html
html(lang='de')
head
meta(charset='utf-8')
meta(http-equiv='X-UA-Compatible', content='IE=edge')
meta(name='viewport', content='width=device-width, initial-scale=1')


script(src='https://ajax.googleapis.com/ajax/libs/jquery
/1.11.3/jquery.min.js')
// Das neueste kompilierte und minimierte CSS
link(rel='stylesheet', href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css')
// Optionales Theme
link(rel='stylesheet', href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css')
// Das neueste kompilierte und minimierte JavaScript
script(src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js')
link(rel='stylesheet', href='/stylesheets/style.css')
title Kontaktformular

body
.container
h1 Get in touch!
#message
form(action='http://localhost:3000/contact', method='POST')
.form-group
label(for='email') Email address
input#email.form-control(type='text', placeholder='Enter email', name='email')
p.help-block We'll never share your email with anyone else.
.form-group
label(for='subject') Subject
input#subject.form-control(type='text', name='subject')
.form-group
label(for='text') What would you like to ask us?
textarea.form-control(rows='5', name='text')
button#submit.btn.btn-primary(type='submit') Submit

.container
h2 Update data
form(action='http://localhost:3000/contact/update', method='POST')
.form-group
label(for='id') ID
input#id.form-control(type='text', placeholder='Give a specific ID to update your entry in the DB', name='id')
.form-group
label(for='email') Email address
input#email.form-control(type='text', placeholder='Enter email', name='email')
p.help-block We'll never share your email with anyone else.
.form-group
label(for='subject') Subject
input#subject.form-control(type='text', name='subject')
.form-group
label(for='text') What would you like to ask us?
textarea.form-control(rows='5', name='text')
button#submit.btn.btn-primary(type='submit') Submit
hr
.container
if entries
table.table.table-bordered
thead
tr
th ID
th Email
th Subject
th Text
th Update Content
tbody
each entry in entries
tr
td #{entry._id}
td #{entry.email}
td #{entry.subject}
td #{entry.text}
td a(href='google.com') Google


script(type='text/javascript').
document.getElementById('submit').onclick = function(e){
function valideEmail(email){
var re = /S+@S+.S+/;
return re.test(email);
}
if (valideEmail(document.getElementById('email').value)){
document.getElementById('message').innerHTML = '<div class="alert alert-success">Your message was sent, we`ll respond ASAP!</div';
} else {
document.getElementById('message').innerHTML = '<div class="alert alert-danger">Your message was`t sent, please check your entries!</div';
e.preventDefault();
}
}

我真的很感谢的任何帮助

我已经使用mlab、mongoDB、mongose数据库制作了基本节点js crud应用程序

const mongoose = require('mongoose');
let dev_db_url = 'mongodb://Anuj:Anuj123@ds233320.mlab.com:33320/db1';
const mongoDB = process.env.MONGODB_URI || dev_db_url;
mongoose.connect(mongoDB, { useNewUrlParser: true });
mongoose.Promise = global.Promise;
const db = mongoose.connection;
db.on('error', console.error.bind(console,'MongoDb Connection Error'));

具有MVC结构-路由器、模型、控制器,还可以放入删除后的数据参考这个-Nodejs Crud应用

最新更新