nodejs+mongodb小例子

作者: DouQing | 来源:发表于2017-04-11 11:57 被阅读0次
学习是一个慢慢理解的过程,所以会不间断更新~

上次学习mongodb还是上个暑假,现在已经忘的差不多了,等于从零开始学习了,而网上了纯粹的例子太少了,经过最近的学习,将自己从零开始学习的过程记录下来

代码github地址:https://github.com/DQing/mongo-demo

资源:
ubuntu16.04
mongodb
Robomongo (mongodb可视化客户端,有ubuntu版本)

现在假定上面的资源你都已经安装好了。


连接mongodb

#connect.js
var mongoose = require("mongoose");   //需要提前使用npm安装mongodb

var url = "mongodb://127.0.0.1:27017/mongo";   //mongo是我的数据库
var db = mongoose.connect(url);                     //连接数据库

db.connection.on("error", function (error) {
    console.log("数据库连接失败:" + error);
});
db.connection.on("open", function () {
    console.log("数据库连接成功");
});

不出意外的话当你在终端运行node connect.js,会输出“数据库连接成功”,这就说明我们的数据库已经可以成功连接上了。

创建数据库模型

在连接上数据库后,我们就得考虑我们想在数据库中存取哪些数据,它们的结构是怎样,这就需要我们去构建数据库模型了,如下:

#schema.js
var mongoose = require('mongoose');
var UserSchema = new mongoose.Schema({ //定义数据模型
    name: String,
    age: Number,
    sex: String
});
mongoose.model('User', UserSchema);//将该Schema发布为Model

这一步就不需要在终端运行啦~

测试

现在我们就可以将前面定义的connect.js文件和schema.js联合起来进行测试

#index.js
var mongoose = require('mongoose');
require('./connect.js');
require('./schema.js');
var User = mongoose.model('User');  //User为model name
mongoose.Promise = global.Promise;  //为了避免警告的出现,因为mongoose的默认promise已经弃用了

var user = new User({    
    name: 'douqing',
    age:18,
    sex:'女'
});

user.save(function (err) {
    console.log('save status:', err ? 'failed' : 'success');
});

现在我们在终端输入node index.js,就会出现

数据库连接成功
save status: success

在Robomongo查看会看到我的mongo数据库下有了users表,并且数据已经保存进去了


mongodb.png

图中_id_v字段是系统自己添加的数据,其他的数据就和我们刚才在模型中定义的数据是完全一样的。
当然你也可以通过命令行在终端查看是否添加成功。
现在对于mongodb基本的操作就算成功啦~

其他方法应用(增删改查)

#index.js
var mongoose = require('mongoose');
require('./connect');
require('./schema.js');
var User = mongoose.model('User');//User为model name
mongoose.Promise = global.Promise;

var user = new User({
    name: 'douqing',
    age:18,
    sex:'女'
});

user.save(function (err) {    //增加
    console.log('save status:', err ? 'failed' : 'success');
});

User.find({}, function (err,results) {  //查找出数据库中所有数据
    if(err){
        console.log('error message',err);
        return;
    }
    console.log('results',results);
});

User.findOne({name : 'douqing'},function (err, result) {    //根据条件查找相应的数据
    if(err){
        console.log('error message:', err);
    }
    console.log('result', result); //输出name=‘douqing’的所有数据
});

User.findByIdAndUpdate('58ec4b0090c04916666ce203', {name: 'liji'}, //根据id查找对应数据并将name字段修改为‘liji’
function (err, result) {
    if (err) {
        console.log('error message:' + err);
    }
    console.log(result);
});

User.remove({name:'douqing'},function (err, result) { //删除name=‘douqing‘对应的数据
    if (err){
        console.log('error message:' + err);
    }
    console.log('remove success');
});

运行index.js文件,即可在终端获得从数据库返回的数据。

更多API详解http://mongoosejs.com/docs/api.html

较深层次理解

不知道大家对于上面的users表是如何产生的有没有疑问,当我在写代码时,并没有在任何地方指定或者创建users表。
经过查证发现原来是schema.js文件中的mongoose.model('User', UserSchema)在作鬼。
当我们没有指定表名时,系统默认会在name后面加s作为使用表名,所以这就可以解释为什么我们的表名是users(还会变成小写)

mongoose.model()方法可以有四个参数

  1. name:为模型model的名称
  2. schema:为mongodb的document映射的schema
  3. collection:为真正的collection名称
  4. skipInit:为是否跳过初始化,默认为false

那么现在我们可以将schema.js文件修改成这样

var mongoose = require('mongoose');
var UserSchema = new mongoose.Schema({ //定义一个Schema
    name: String,
    age: Number,
    sex: String
});
mongoose.model('User', UserSchema,'test',false);//这时我指定的表名为test

运行index.js文件之后,在Robomongo上显示如下

mongodb.png

希望这篇文章有帮助到你~
如果你有什么问题,可以在下面留言哦!

相关文章

  • nodejs+mongodb小例子

    学习是一个慢慢理解的过程,所以会不间断更新~ 上次学习mongodb还是上个暑假,现在已经忘的差不多了,等于从零开...

  • nodejs下mongodb使用以及模型的创建

    笔主nodejs玩了两天,然后想着nodejs+mongodb来搭建一个小后台。在建模这一步,mongoose里的...

  • nodejs+mongodb

    nodejs操作 mongodb数据库增删改查 创建node增删改查执行文件

  • Nodejs+Mongodb

    nodejs操作 mongodb数据库增删改查 创建node增删改查执行文件 有闪电

  • Win10部署Docker + mongodb + node.j

    本文主要参考了docker入门nodejs+mongodb以及Nodejs 应用简单的访问Mongodb 部署至D...

  • Selenium小例子

    爬取腾讯动漫 爬取某网站漫画 爬取拉勾网

  • mybatis小例子

    什么是Mybatis MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBa...

  • ROR 小例子

    toy_app ROR 小例子 1. 前期准备 创建工程: 修改 gemfile 文件,增加 Heroku 生产环...

  • javaScript小例子

    搜索框效果 上移下移 截取文件名称

  • AJAX小例子

    用ajax实现web前端与后台数据的一个交互 html部分 请在下面的输入框中键入字母(A - Z): 姓氏: ...

网友评论

    本文标题:nodejs+mongodb小例子

    本文链接:https://www.haomeiwen.com/subject/lhgcattx.html