node.js backend

create a new directory “mytasklist”

set up node.js server



npm init (entry point =>server.js)

open package.json

npm install express body-parser ejs mongojs --save

create server.js file (backend server file)

//run the server with nodemon

var express = require(‘express‘);
var path = require(‘path‘);
var bodyParser = require(‘body-parser‘);

var index = require(‘./routes/index‘); //for index home page
var tasks = require(‘./routes/tasks‘); //apis work with mongodb

var port = 3000;

var app = express();

//view engine
app.set(‘views‘, path.join(__dirname, ‘views‘));
app.set(‘view engine‘, ‘ejs‘);
app.engine(‘html‘, require(‘ejs‘).renderFile);

//set static folder, for all angular file
app.use(express.static(path.join(__dirname, ‘client‘)));

//body parser middle ware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

app.use(‘/‘, index);
app.use(‘/api‘, tasks);

app.listen(port, function(){
    console.log(‘server started on port ‘+port);
});

create ./routes/index.js

var express = require(‘express‘);
var router = express.Router();

router.get(‘/‘, function(req, res, next){
    res.render(‘index.html‘);
});

module.exports = router;

create ./routes/tasks.js

var express = require(‘express‘);
var router = express.Router();

router.get(‘/tasks‘, function(req, res, next){
    res.send("TASK API");
});

module.exports = router;

create ./views/index.html

<!DOCTYPE html>
<html>
    <head>
        <title>My Task List</title>
    </head>
    <body>
        <h1>HELLO WORLD!</h1>
    </body>
</html>

npm install -g nodemon

run "nodemon" in the console to start the server

set up mongodb database



login mlab.com

create new -> single-node -> sandbox -> databasename: mytasklist_hardi -> create new mongodb deployment

click on the database -> users -> add database user

click collections tab ->add collection -> name: tasks

click on tasks -> add document

{
  "title":"walk the dog"  ,
  "isDone": false
}

update tasks.js file



go to database page on mlab.com and copy the url, replace the dbuser and dbpassword with yours

 
var express = require(‘express‘);
var router = express.Router();
var mongojs = require(‘mongojs‘);
var db = mongojs(‘mongodb://Hardi:[email protected]:61021/mytasklist_hardi‘, [‘tasks‘]); //copy from mlab.com

//get all tasks
router.get(‘/tasks‘, function(req, res, next){
    db.tasks.find(function(err, tasks){
        if(err){
            res.send(err);
        }
        res.json(tasks);
    });

});

//get single task
router.get(‘/task/:id‘, function(req, res, next){
    db.tasks.findOne({_id: mongojs.ObjectId(req.params.id)},function(err, task){
        if(err){
            res.send(err);
        }
        res.json(task);
    });
});

//save task
router.post(‘/task‘, function(req, res, next){
    var task = req.body;
    if(!task.title || (task.isDone + ‘‘)){
        res.status(400);
        res.json({
            "error": "bad data"
        });
    }else{
        db.tasks.save(task, function(err, task){
            if(err){
                res.send(err);
            }
            res.json(task);
        });
    }
});

//delete task
router.delete(‘/task/:id‘, function(req, res, next){
    db.tasks.remove({_id: mongojs.ObjectId(req.params.id)},function(err, task){
        if(err){
            res.send(err);
        }
        res.json(task);
    });
});

//update task
router.put(‘/task/:id‘, function(req, res, next){
    var task = req.body;
    var updTask = {};

    if(task.isDone){
        updTask.isDone = task.isDone;
    }
    if(task.title){
        updTask.title = task.title;
    }
    if(!updTask){
        res.status(400);
        res.json({
            "error": "bad data"
        })
    }else{
        db.tasks.update({_id: mongojs.ObjectId(req.params.id)}, updTask, {}, function(err, task){
            if(err){
                res.send(err);
            }
            res.json(task);
        });
    }

});

module.exports = router;


参考资料;

时间: 2024-08-27 02:06:39

node.js backend的相关文章

Understanding node.js by Felix Geisend&#246;rfer(翻译 by shangyan)

9/4/10 by Felix Geisendörfer Node.js has generally caused two reactions in people I've introduced it to. Basically people either "got it" right away, or they ended up being very confused. If you have been in the second group so far, here is my a

使用 StatsD + Grafana + InfluxDB 搭建 Node.js 监控系统

在石墨,我们之前使用 ELK 搭了一套监控图表,由于一些原因,比如: 1.Kibana 经常查日志查挂2.Kibana 的图表不太美观.不够灵活所以调研了一下,选择用 StatsD + Grafana + InfluxDB 搭建一套新的监控系统. 工具简介 StatsD 是一个使用 Node.js 开发的简单的网络守护进程,通过 UDP 或者 TCP 方式侦听各种统计信息,包括计数器和定时器,并发送聚合信息到后端服务,例如 Graphite.ElasticSearch.InfluxDB 等等,这

How to install Node.js on Linux

How to install Node.js on Linux Posted on November 13, 2015 by Dan Nanni Leave a comment Question: How can I install Node.js on [insert your Linux distro]? Node.js is a server-side software platform built on Google's V8 JavaScript engine. Node.js has

Understanding node.js

Understanding node.js Posted on 29/4/10 by Felix Geisendörfer Node.js has generally caused two reactions in people I've introduced it to. Basically people either "got it" right away, or they ended up being very confused. If you have been in the

Node.js企业开发:应用场景

要想用Node.js首先需要知道它到底是什么, 有哪些优缺点. 然后我们才能知道到底 Node.js 适合哪些应用场景. Node.js 维基百科:“Node.js 是谷歌 V8 引擎.libuv平台抽象层 以及主体使用 Javscript 编写的核心库三者集合的一个包装外壳.” Node.js的作者瑞恩·达尔 (Ryan Dahl) 给了开发者一个使用事件驱动来实现异步开发的优秀解决方案. Node.js 的主要思路是:使用非阻塞的,事件驱动的 I/O 操作来保持在处理跨平台 (across

A chatroom for all! Part 1 - Introduction to Node.js(转发)

项目组用到了 Node.js,发现下面这篇文章不错.转发一下.原文地址:<原文>. ------------------------------------------- A chatroom for all! Part 1 - Introduction to Node.js Rami Sayar 4 Sep 2014 11:00 AM 7 This node.js tutorial series will help you build a node.js powered real-time

node.js如何发送以太坊交易?

" 注意:在本教程中我使用web3js 1.0版本 " 大家好,我将解释如何从NodeJS后端发送交易.我将使用rinkeby testnet并将创建一个路由器,还添加一些节点模块并使用infura http接口来完成教程. 我们需要web3js,express和ethereumjs-tx模块来执行交易.之后你需要从Infura输入你自己的api key,登录到infura. 开始 首先,你需要为此项目创建一个空文件夹,以便更轻松地访问它.创建文件夹后,你需要在该文件夹中打开命令she

Node.js 中流操作实践

本文节选自 Node.js CheatSheet | Node.js 语法基础.框架使用与实践技巧,也可以阅读 JavaScript CheatSheet 或者 现代 Web 开发基础与工程实践 了解更多 JavaScript/Node.js 的实际应用. Stream 是 Node.js 中的基础概念,类似于 EventEmitter,专注于 IO 管道中事件驱动的数据处理方式:类比于数组或者映射,Stream 也是数据的集合,只不过其代表了不一定正在内存中的数据..Node.js 的 Str

Node.js源码解读-EventLoop

之前有一些机会断断续续接触过一些Node.js的项目,但只仅限于使用它简单实现一些功能,没有过多深入的研究.现在因为带领公司大前端技术,服务端渲染直出.BFF(Backend For Frontend)等需求会越来越多,组内需要对服务端技术有更深刻的理解,如果对Node.js仅仅停留在如何写业务代码的层面,那恐怕是无法保证以后服务的稳定性. 本文会基于node-v12.13.0版本的源码,对核心模块代码做一些阅读和理解,以窥探Node.js服务高效的秘诀.在研究源码之前,首先有几个疑问,看是否能