You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
3.5 KiB

// https://mongoosejs.com/docs/connections.html
const mongoose = require("mongoose");
mongoose.Promise = global.Promise;
mongoose.connect(
'mongodb://localhost:27017/dbtodo?readPreference=primary&appname=TodoListMongo&directConnection=true&ssl=false',
{
useNewUrlParser: true,
useUnifiedTopology: true
}
).then
(
() =>
{
console.log("connected succesfully");
},
err =>
{
console.log("connection failed");
}
);
const Schema = mongoose.Schema;
var TaskSchema = new Schema({
name: {
type:String,
required: 'name is required'
}
});
task = mongoose.model('task',TaskSchema);
const http = require ('http'); // to create server
const url = require('url'); // to parse url
const { Console } = require("console");
const BASIC_API_PORT = 3998;
const app = http.createServer(
async (req, res) => {
const parsedURL = url.parse(req.url, true);
if (req.method === 'GET' && parsedURL.pathname.startsWith('/api/tasks'))
{
task.find({}, function(err, tasks) {
if(err)
{
res.statusCode = 400;
res.end(err);
}
else
{
res.statusCode = 200;
res.end(JSON.stringify(tasks));
}
});
}
/*
else if (methode : DELETE route : /api/del param : id )
{
fonction remove prend en paramètre _id qui est l'id du document à effacer
}
*/
else if (req.method === 'DELETE' && parsedURL.pathname.startsWith('/api/del'))
{
if(!parsedURL.query.id)
{
res.statusCode = 400;
res.end("missing required argument id");
}
else
{
console.log("Received :" + parsedURL.query.id);
task.remove({ _id : parsedURL.query.id }, function (err,task) {
if(err)
{
res.statusCode = 400;
res.end(err);
}
else
{
res.statusCode = 200;
res.end('task '+parsedURL.query.id+' deleted.');
}
});
}
}
else if (req.method === 'POST' && parsedURL.pathname.startsWith('/api/task'))
{
if(!parsedURL.query.name)
{
res.statusCode = 400;
res.end("missing required argument name");
}
else
{
console.log("Received :" + parsedURL.query.name);
var new_task = new task(parsedURL.query);
new_task.save(function(err,task){
if(err)
{
res.statusCode = 400;
res.end(err);
}
else
{
res.statusCode = 200;
res.end(JSON.stringify(task));
}
});
console.log(new_task);
}
}
else
{
res.statusCode = 400;
res.end("mongoose API Endpoint Not Supported");
}
}
);
app.listen(BASIC_API_PORT);
console.log('server mongoose test started');