node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】


Posted in Javascript onMarch 07, 2019

本文实例讲述了node链接mongodb数据库的方法。分享给大家供大家参考,具体如下:

一、安装2.6版本以上的mongodb在云服务器上(百度就能查到安装方法,以及验证是否安装成功一般是mongodb ?version);

二、因为mongodb的默认开启端口是27017,所以要在Ubuntu上开启这个端口:

ufw allow 27017
ufw enable
ufw reload
ufw status //这是查看这个端口是否开启,iptables --list也可以查看

光在服务器开了端口还不行,还要在阿里云服务器控制台的安全组中添加这个端口:

node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】

三、在node项目中利用npm安装mongodb:

npm i mongodb --save

四、链接的具体代码(前提是已经建立了简单的http或者https服务),具体代码:

const http = require('http')
  , https = require('https');
const express = require('express');
const bodyParser = require('body-parser')
const app = express();
const fs = require('fs');
const ejs = require('ejs');
const path = require('path');
const MongoClient = require('mongodb').MongoClient;
// 返回信息
const questions = {
  code: 200,
  msg: 'success',
};
// https证书,开https服务的自验证证书
const options = {
  key: fs.readFileSync('./privatekey.pem'),
  cert: fs.readFileSync('./certificate.pem')
};
let xltitle = '标题(初始化数据)',
  xlcontent = '内容(初始化数据)',
  xlfaceid = '1(初始化数据)';
const url = 'mongodb://127.0.0.1/xlbase';
// 默认端口27017,无需填写
// 也可以修改端口,vim /etc/mongodb.conf
// 初始化数据库
MongoClient.connect(url, function (err, db) {
  if (err) throw err;
  let database = db.db('xlbase');
  console.log('------------数据库初始化成功------------');
// 如果没有face这个集合,会创建一个,所以可以用这个来初始化集合
  database.createCollection('face', function (err, res) {
    if (err) throw err;
    console.log('------------集合初始化完毕------------');
    db.close();
  });
});
//设置跨域访问
app.all('*', function (req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
  res.header("X-Powered-By", ' 3.2.1');
  // res.header("Content-Type", "application/json;charset=utf-8");
  next();
});
// parse application/x-www-form-urlencoded 解析
app.use(bodyParser.urlencoded({extended: false}));
// parse application/json 解析
app.use(bodyParser.json());
// view engine setup,视图模版
app.set('views', path.join(__dirname, './'));
app.set('view engine', 'jade');
// 静态资源解析路径(css,js,图片等)
app.use(express.static(path.join(__dirname, './static')));
// 数据接收接口
app.post('/info', function (req, res) {
  res.header("Content-Type", "application/json;charset=utf-8");
  res.status(200);
  xltitle = req.body.title;
  xlcontent = req.body.content;
  xlfaceid = req.body.faceId;
  let info = {
    'faceid': xlfaceid,
    'title': xltitle,
    'content': xlcontent
  };
  let faceid = {
    'faceid': xlfaceid
  };
  let updateInfo = {$set: info};// 组装更新的信息
  MongoClient.connect(url, function (err, db) {
    let database = db.db('xlbase');
    database.collection('face').find(faceid).toArray(function (err, result) {
      if (err) throw err;
      // 判断集合中faceid和当前传过来的faceid是否相同和存在
      // 如果不存在就新插入这条数据
      // 如果存在且相同,就更新数据
      if (result.length !== 0 && result[0].faceid === xlfaceid) {
        database.collection("face").updateOne(faceid, updateInfo, function (err, res) {
          if (err) throw err;
          console.log("------------数据更新成功------------");
          db.close();
        });
      } else {
        database.collection('face').insertOne(info, function (err, res) {
          if (err) throw err;
          console.log("------------数据添加成功------------");
          db.close();
        })
      }
    })
  });
  res.json(questions); // 返回信息
  res.end(JSON.stringify(req.body, null, 2))
});
app.get('/index', function (req, res) {
  res.status(200);
  res.header("Content-Type", "text/html;charset=utf-8");
// 根据faceId查询数据
  MongoClient.connect(url, function (err, db) {
    if (err) throw err;
    let dbo = db.db("xlbase");
    let face = {"faceid": xlfaceid}; // 查询条件
    let xltitle1 = 404;
    let xlcontent1 = '网页出错!';
    dbo.collection("face").find(face).toArray(function (err, result) {
      if (err) throw err;
      console.log(result);
      xltitle1 = result[0].title;
      xlcontent1 = result[0].content;
      db.close();
      console.log('------------查询完毕------------');
      res.send('<h3 style="font-size: 35px">' + xltitle1 + '</h3>' +
        '<pre style="white-space: pre-wrap;word-wrap: break-word;font-size: 30px">' + xlcontent1 + '</pre>');
      res.end();
    });
  });
})
// 配置服务端口
// http.createServer(app).listen(3001, function () {
//   console.log('3001')
// });
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; // 绕过证书验证
https.createServer(options, app).listen(8009, function () {
  console.log('port: 8009');
});
// var server = app.listen(3001, function () {
//
//   var host = server.address().address;
//
//   var port = server.address().port;
//
//   console.log('Example app listening at http://%s:%s', host, port);
// })

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
JavaScript实现拼音排序的方法
Nov 20 Javascript
php与js的区别是什么
Aug 05 Javascript
jQuery中contents()方法用法实例
Jan 08 Javascript
详解如何较好的使用js
Dec 16 Javascript
Vue 仿百度搜索功能实现代码
Feb 16 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
Jan 15 Javascript
vue实现前进刷新后退不刷新效果
Jan 26 Javascript
Angular5中调用第三方库及jQuery的添加的方法
Jun 07 jQuery
Vue+Node实现的商城用户管理功能示例
Dec 23 Javascript
JS一次前端面试经历记录
Mar 19 Javascript
Vue computed 计算属性代码实例
Apr 22 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
Mar 07 #Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
Mar 07 #jQuery
在Web关闭页面时发送Ajax请求的实现方法
Mar 07 #Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
Mar 07 #Javascript
使用vue开发移动端管理后台的注意事项
Mar 07 #Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
Mar 07 #Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
Mar 07 #Javascript
You might like
用php写的serv-u的web申请账号的程序
2006/10/09 PHP
在命令行下运行PHP脚本[带参数]的方法
2010/01/22 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
FF IE兼容性的修改小结
2009/09/02 Javascript
javascript中创建对象的三种常用方法
2010/12/30 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
娱乐地球:Entertainment Earth
2020/01/08 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
商场消防管理制度
2014/01/12 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
房屋租房协议书范本
2014/12/04 职场文书
辞职信怎么写
2015/02/27 职场文书
赡养老人协议书范本
2015/08/06 职场文书
python异常中else的实例用法
2021/06/15 Python