123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 AI代码助手 复制代码 var mongoose = require ('mongoose' );var express = require ('express' );var bodyParser = require ('body-parser' );const {ObjectID} = require ('mongodb' );var _ = require ('lodash' );const validator = require ('validator' );//appvar app = express();const port = process.env.PORT || 3000 ;//express middleware Jonson对象与字符串转换。app.use(bodyParser.json());//Promisemongoose.Promise = global.Promise;//连接mogodbmongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/TodoApp' );//模版var Todo = mongoose.model('Todo' ,{ text:{ type :String, //类型 required:true , //必须要有 minlength:1 , //最小长度 trim:true //去除空格 }, completed:{ type :Boolean, default:false //默认值 }, completedAt:{ type :Number, default:null }});var User = mongoose.model('User' , { email: { type : String, required: true , trim: true , minlength: 1 , unique: true , validate: { validator: validator.isEmail, message: '{VALUE} is not a valid email' } }, password: { type : String, require : true , minlength: 6 }, tokens: [{ access: { type : String, required: true }, token: { type : String, required: true } }]});// {// email: 'andrew@example.com' ,// password: 'adpsofijasdfmpoijwerew' ,// tokens: [{// access: 'auth' ,// token: 'poijasdpfoimasdpfjiweproijwer' // }]// }//express routeapp.post('/todos' ,(req,res)=>{// console.log (req.body); //建立对象document var todo = new Todo({ text:req.body.text }); //保存 todo.save().then ((doc)=>{ res.send(doc); },(e)=>{ res.status (400 ).send(e); });})//获取所有属性app.get('/todos' , (req, res) => { Todo.find ().then ((todos) => { res.send({todos}); }, (e) => { res.status (400 ).send(e); })});//查询idapp.get('/todos/:id' , (req, res) => { var id = req.params.id; if (!ObjectID.isValid(id)) { return res.status (404 ).send(); } Todo.findById(id).then ((todo) => { if (!todo) { return res.status (404 ).send(); } res.send({todo}); }).catch((e) => { res.status (400 ).send(); });});//删除app.delete('/todos/:id' , (req, res) => { var id = req.params.id; if (!ObjectID.isValid(id)) { return res.status (404 ).send(); } Todo.findByIdAndRemove(id).then ((todo) => { if (!todo) { return res.status (404 ).send(); } res.send({todo}); }).catch((e) => { res.status (400 ).send(); });});//更新app.patch('/todos/:id' , (req, res) => { var id = req.params.id; var body = _.pick(req.body, ['text' , 'completed' ]); if (!ObjectID.isValid(id)) { return res.status (404 ).send(); } if (_.isBoolean(body.completed) && body.completed) { body.completedAt = new Date().getTime(); } else { body.completed = false ; body.completedAt = null; } Todo.findByIdAndUpdate(id, {$set: body}, {new: true }).then ((todo) => { if (!todo) { return res.status (404 ).send(); } res.send({todo}); }).catch((e) => { res.status (400 ).send(); })});// POST /usersapp.post('/users' , (req, res) => { var body = _.pick(req.body, ['email' , 'password' ]); var user = new User(body); user.save().then ((user) => { res.send(user); }).catch((e) => { res.status (400 ).send(e); })});//监听app.listen(port,()=>{ console.log (`Start on port ${port}`);});module .exports = { app, Todo} AI代码助手 复制代码