资讯专栏INFORMATION COLUMN

手把手教你开发nodejs微博网站-连接数据库

waterc / 1106人阅读

摘要:连接数据库引子博客肯定是以用户为中心,包括用户的注册,用户的登录,用户发表留言,对留言进行评价等等功能,所以,自然离不开数据库。概念解析在中基本的概念是文档集合数据库。这两种方式连接都需要,或者主机名字,数据库名字,端口号,配置项等。

连接数据库 引子

博客肯定是以用户为中心,包括用户的注册,用户的登录,用户发表留言,对留言进行评价等等功能,所以,自然离不开数据库。

MongoDB
MongoDB简介

MongoDB是一个开源的NoSql数据库,相比mysql那样的关系型数据库,它更为轻巧,灵活,非常适合在数据规模很大,事务性不强的场合下使用

MongoDB将数据存储为一个文档,数据结构由键值对(key=>value)组成。字段值可以包含其他文档,数组及文档数组

相对于mysql这类需要把对象属性转换成SQL语句才能保存下来 ,MongoDB这些可以直接保存JS对象成数据库的文档,来看一个MongoDB文档的示例:

    {
        "_id" : ObjectId( "4f7fe8432b4a1077a7c551e8" ),
        name : "phping",
        age : 28,
        hobby : ["movies","music","nba"]
    }

可以看到数据格式为json,因此与javascript的亲和性很强,我们的项目也是使用MongoDB。

MongoD概念解析

mongodb中基本的概念是文档、集合、数据库。下表将帮助您更容易理解Mongo中的一些概念:

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据库记录集合/文档
column field 数据字段/域
index index 索引
table joins 表连接,mongodb不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

通过下图实例我们也能更好的了解Mongo中的一些概念:

MongoDB安装

大家可以针对自己的系统,参考下面的链接向导来进行安装,步骤都是非常的详细。这里不再赘述。

Windows 用户向导:https://docs.mongodb.com/manu...

Linux 用户向导:https://docs.mongodb.com/manu...

Mac 用户向导:https://docs.mongodb.com/manu...

Robomongo

我使用的MongoDB 可视化管理工具是Robomongo,当然还有其它的可以使用,如:MongoChef等。

Robomongo
Robomongo 是一个基于 Shell 的跨平台开源 MongoDB 管理工具。嵌入了 JavaScript 引擎和 MongoDB mogo 。只要你会使用 mongo shell ,你就会使用 Robomongo。提供语法高亮、自动完成、差别视图等。

点击这里下载

创建连接
下载并安装成功后点击左上角的 Create 来创建一个连接,给该连接起个名字如: localhost,使用默认地址(localhost)和端口(27017)即可,点击 Save 保存,如下图:

添加数据
前面已经简单的介绍了mongodb中的一些概念,让我们使用Robomongo这个图形化管理工具来添加数据:

点插入文档:

会打开一个空白面板,让我们手动写入要添加的数据:

写一个简单的测试数据如下:

其中左下角的按钮可以用来验证我们写入的数据格式,数据格式无误后点击右下角的保存按钮即可。

查看新增加的文档:

这时,在你右边区域就可以看到我们刚才新增加的数据了:

使用Mongolass连接数据库

好了,MongoDB安装成功了,我们来使用Mongolass连接数据库。

安装Mongolass
$ npm install mongoose
连接MongoDB

首先,我们需要定义一个连接。如果您的应用程序只使用一个数据库,您应该使用mongoose.connect
如果您需要创建额外的连接,使用mongoose.createConnection

这两种方式连接都需要mongodb:// URI,或者主机名字,数据库名字,端口号,配置项等。

var mongoose = require("mongoose");

mongoose.connect("mongodb://localhost/my_database");
定义一个模型
var mongoose = require("mongoose");

mongoose.connect("mongodb://localhost/my_database");

var Cat = mongoose.model("Cat", { name: String });
访问一个模型
var mongoose = require("mongoose");

mongoose.connect("mongodb://localhost/my_database");

var Cat = mongoose.model("Cat", { name: String });

var kitty = new Cat({ name: "Zildjian" });
kitty.save(function (err) {
  if (err) {
    console.log(err);
  } else {
    console.log("meow");
  }
});

更多使用可以查看官网文档.

总结

本篇主要讲解了我在开发本项目时使用的什么数据库,怎么连接数据库,下节干货就来了:用户注册功能开发,敬请期待!
工程代码可从github上下载:https://github.com/phping1/no...

想查看更多文章,请点击我的博客

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/18950.html

相关文章

  • 把手教你如何用Crawlab构建技术文章聚合平台(一)

    摘要:本文将介绍如何使用和抓取主流的技术博客文章,然后用搭建一个小型的技术文章聚合平台。是谷歌开源的基于和的自动化测试工具,可以很方便的让程序模拟用户的操作,对浏览器进行程序化控制。相对于,是新的开源项目,而且是谷歌开发,可以使用很多新的特性。 背景 说到爬虫,大多数程序员想到的是scrapy这样受人欢迎的框架。scrapy的确不错,而且有很强大的生态圈,有gerapy等优秀的可视化界面。但...

    LinkedME2016 评论0 收藏0
  • 把手教你如何用Crawlab构建技术文章聚合平台(一)

    摘要:本文将介绍如何使用和抓取主流的技术博客文章,然后用搭建一个小型的技术文章聚合平台。是谷歌开源的基于和的自动化测试工具,可以很方便的让程序模拟用户的操作,对浏览器进行程序化控制。相对于,是新的开源项目,而且是谷歌开发,可以使用很多新的特性。 背景 说到爬虫,大多数程序员想到的是scrapy这样受人欢迎的框架。scrapy的确不错,而且有很强大的生态圈,有gerapy等优秀的可视化界面。但...

    Jeffrrey 评论0 收藏0
  • 把手教你做个人 app

    摘要:微博这是我好哥们教我的,他真的好牛,个人做的更牛,给您们看一个链接,就知道如何在微博上推广了,没错,就是话题,用两个号圈起来,发微博,就是一个话题,别人可以这个话题下讨论,无形中形成了推广作用。 我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示;另外,开发一个app,还需要美工协助切图。没了接口,没了美工,app似乎只能做成单机版或工具类app,真的是这样...

    tomato 评论0 收藏0
  • 把手教你用typescript+nodejs+mongoDB+vue2+angular4仿简书

    摘要:前端的所使用的技术栈后端这个小项目才开始,使用已经搭建好了前端开发环境及相应的的配置。接下来我会带着大家一起完成整个简书的开发工作。 这是一个开源的个人项目。 前端的所使用的技术栈: typescriptes6vue2vue-cliwebpack2axiosangular4angular-cli 后端: nodejsmongoDBejs 这个小项目才开始,使用vue-cli已经搭建好了...

    liuchengxu 评论0 收藏0
  • 把手教你在Nginx上使用CertBot

    摘要:不想让应用改用的服务。因此,研究如何启用,本文即是介绍如何在上配合使用。因此抛弃这个模式,我们使用配置模式。修改你的服务器配置,在模块添加可以看到,上面的,我们让他指向了,因为我的应用是通过的写的,如果修改源代码的话,比较麻烦。 前言 自己做了一个iOS App,需要访问自己的网站获取数据,但是系统默认只能直接访问https的网站。不想让应用改用http的服务。因此,研究如何启用htt...

    smallStone 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<