当前位置:网站首页>Use nodejs+express+mongodb to complete the data persistence project (with modified source code)
Use nodejs+express+mongodb to complete the data persistence project (with modified source code)
2022-07-03 20:24:00 【Brave * Niuniu】
utilize nodejs+express+mongodb Complete the data persistence project
Additions and deletions

- Available console view mongodb Whether the database data is successfully stored

A problem encountered , Back to id Attribute values are quoted . Special attention 
Using mongodb Before database storage , Remember to open the database , Then connect to the database 
student.js Core code :
var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1/test');
var Schema = mongoose.Schema;
var studentSchema = new Schema({
name: {
type: String,
required: true
},
sex: {
type: Number,
// Enumerate these numbers
enum: [0, 1],
default: 1
},
age: {
type: Number
},
hover: {
type: String
}
})
// Export the model constructor directly
module.exports = mongoose.model('Student', studentSchema)
router.js Modify the core code
// Routing module design set
var fs = require('fs');
var path = require('path');
var Student = require('./student');
/* Student.updataByid({ id: 1, name: " Li Si ", age: 19 }, function (err) { if (err) { return console.log(' Modification failed '); } console.log(' Modification successful '); }) */
var express = require('express');
// Create a routing container
var router = express.Router();
// Mount the router to router In the container
router.get('/students', function (req, res) {
// Parameter 2 is optional , hold uft8 Characters are converted into strings we know
/* fs.readFile(path.join(__dirname, './db.json'), 'utf8', function (err, data) { if (err) { // Status code 500, Server error console.log(" Something went wrong "); // return res.status(500).send('Server error.'); } res.render('index.html', { // The data read from the file must be a string // So we must turn it into an object students: JSON.parse(data).student }); }) */
Student.find(function (err, students) {
if (err) {
return res.status(500).send('Server error.');
}
res.render('index.html', {
students: students
});
})
})
router.get('/students/new', function (req, res) {
res.render('new.html');
})
router.post('/students/new', function (req, res) {
/* 1. Get form data 2. Handle ( Save the data in db.json Achieve persistence ) 3. Send a response */
// console.log(req.body);
// Read it out first , Turn to object
// Then go to the object push data , Then turn the object into a string
// Then write the string to the file again
var student = req.body;
new Student(student).save(function (err) {
if (err) {
return res.status(500).send('Server error.');
}
res.redirect('/students');
})
})
router.get('/students/edit', function (req, res) {
// Handle connection problems in the list of clients ( Need to have id Parameters )
// Get the students to edit
// Render edit page "1. according to id Find out the student information , Then the template engine renders the page
// console.log(req.query.id); Can get id
// Turn the obtained string into Wie Without quotation marks id data
// Regular expression patterns
Student.findById(req.query.id.replace(/"/g, ''), function (err, student) {
if (err) {
return res.status(500).send('Server error.');
}
// see ID Student :console.log(student);
res.render('edit.html', {
student: student
})
})
})
router.post('/students/edit', function (req, res) {
// Get form data
// to update
// Struend.updataId()
// console.log(req.body);
var id = req.body.id.replace(/"/g, '')
Student.findByIdAndUpdate(id, req.body, function (err) {
if (err) {
return res.status(500).send('Server error.');
}
})
res.redirect('/students')
})
router.get('/students/delete', function (req, res) {
// 1. Get the id
// 2、 according to id Delete
// 3. Send the response data according to the operation result
// console.log(req.query.id);
var id = req.query.id.replace(/"/g, '')
Student.findByIdAndRemove(Aid, function (err) {
if (err) {
return res.status(500).send('Server error.');
}
res.redirect('/students')
})
})
// hold router export
module.exports = router;
边栏推荐
- [Yugong series] February 2022 Net architecture class 004 ABP vNext used in WPF project
- Sightseeing - statistics of the number of shortest paths + state transfer + secondary small paths
- 2. Template syntax
- How to read the source code [debug and observe the source code]
- Global and Chinese market of full authority digital engine control (FADEC) 2022-2028: Research Report on technology, participants, trends, market size and share
- February 14-20, 2022 (osgear source code debugging +ue4 video +ogremain source code transcription)
- Test access criteria
- How to improve data security by renting servers in Hong Kong
- Use of aggregate functions
- Today's work summary and plan: February 14, 2022
猜你喜欢

Geek Daily: the system of monitoring employees' turnover intention has been deeply convinced off the shelves; The meta universe app of wechat and QQ was actively removed from the shelves; IntelliJ pla

AcWing 1460. Where am i?

Preliminary practice of niuke.com (11)

Machine learning support vector machine SVM

2.5 conversion of different data types (2)

2.7 format output of values

How to modify the network IP addresses of mobile phones and computers?

2.6 formula calculation

2.4 conversion of different data types

Q&A:Transformer, Bert, ELMO, GPT, VIT
随机推荐
Deep search DFS + wide search BFS + traversal of trees and graphs + topological sequence (template article acwing)
Use of CMD command
Plan for the first half of 2022 -- pass the PMP Exam
Rad+xray vulnerability scanning tool
Golang type assertion and conversion (and strconv package)
FPGA 学习笔记:Vivado 2019.1 工程创建
Sightseeing - statistics of the number of shortest paths + state transfer + secondary small paths
Part 28 supplement (XXVIII) busyindicator (waiting for elements)
Basic command of IP address configuration ---ip V4
Rd file name conflict when extending a S4 method of some other package
Detailed and not wordy. Share the win10 tutorial of computer reinstallation system
Basic knowledge of dictionaries and collections
Micro service knowledge sorting - asynchronous communication technology
Network security Kali penetration learning how to get started with web penetration how to scan based on nmap
Global and Chinese market of two in one notebook computers 2022-2028: Research Report on technology, participants, trends, market size and share
Titles can only be retrieved in PHP via curl - header only retrieval in PHP via curl
App compliance
Teach you how to quickly recover data by deleting recycle bin files by mistake
Typora charges, WTF? Still need support
Fingerprint password lock based on Hal Library