mongoose学习笔记1之迅速开始

学习mongoose之前,需要先安装好,mongodb和node.js

mongodb简介(引自菜鸟教程

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

安装mongodb。我选择使用brew安装(我用的是mac)

如果你未安装brew,请在终端使用如下命令:

curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1

当brew安装完成后,你需要先更新一下

brew update 

更新过程可能很漫长,啥动静都没有,请耐心等待。

更新完之后,你就可以安装mongodb了。在终端的命令如下:

brew install mongodb

安装完成后,会提示你启动Mongodb的方法,此时你在终端输入如下命令行:

mongod –config /usr/local/etc/mongod.conf

如果此时没反应,那么就说明你启动成功了。你可以在浏览器中输入http://localhost:27017/,就能看的如下结果。

《mongoose学习笔记1之迅速开始》 WechatIMG1055.jpeg

如果终端出现 -bash: mongod: command not found

可以用如下代码解决

export PATH="$PATH:/usr/local/opt/mongodb/bin"

其中$PATH后面代表的是你mongodb安装的路径。如果你是用brew安装,那就是这个路径。

然后进入/usr/local/opt/mongodb/bin目录,执行如下命令

./mongo

如果启动时出现其他错误,你或许需要使用如下命令,建立mongdb的存储文件夹

mkdir -p  /data/db

如果还不行,就谷歌吧。

如果关闭mongodb数据库后,重启不了。那就到/usr/local/opt/mongodb/bin目录执行

./mongod --repair

然后重启mongod

mongod --config /usr/local/etc/mongod.conf

安装mongoose可视化工具

我推荐工具Robomongo
下载地址。然后安装。在mac下,系统不会允许你安装不受信任的app,请在设置-安全与隐私中选择任何来源。然后就可以安装了。
如果你已经启动了mongodb,那么打开使用Robomongo连接localhost:27017。

《mongoose学习笔记1之迅速开始》 WechatIMG1056.jpeg

安装node.js

点击安装教程

准备工作做好了,接下来开始mongoose之旅。

快速开始mongoose

接下来使用命令行安装mongoose (npm使用介绍

npm install mongoose

我喜欢猫,我想要将我遇到的每一只猫记录到mongodb中。首先,需要在我们的项目中包含mongoose,然后连接test-我们运行在本地的MongoDB实例数据库。
在项目中创建 getting-started.js。

// getting-started.js    <em>连接数据库</em>
let mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');

现在我们已经尝试连接了本地的测试数据库。我们需要在连接数据库成功或连接失败的时候得到通知。

let db = mongoose.connection;
db.on('error',()=>{
    console.error('连接失败');
});
db.once('open', function () {
    //回调函数
 });

一旦我们链接成功,我们的回调函数将被调用。为了简洁,我们假定接下来的所有代码都在这个回调函数内。

在Mongoose中,一切都是从Schema(模式)而来。接下来,我们将定义我们的猫。

let kittySchema = mongoose.Schema({
  name:String
});

到目前还好,我们已经得到了一个模式,带有一个属性name,name是一个字符串。接下来,我们将把我们的模式编译成模型。

let Kitten = mongoose.model('Kitten',kittySchema);

一个模型是我们构造文档的一个类(文档是MongoDB中数据的基本单元,非常类似于,关系型数据库管理系统中的行)。既然这样,每个文档就是一只猫,这只猫上带有我们在模式中已经定义好的属性和行为。接下来,让我们创建一只猫的文档。

 let silence = new Kitten({name:"silence"});

猫会叫,那么让我们看一看如何添加“speak”的功能到我们的文档。

//注意:方法必须添加在模式被编译为模型之前。
kittySchema.methods.speak = function(){
  let greeting = this.name?'Memo name is '+this.name:"I don't have a name";
console.log(greeting);
}
 //添加在下面代码之前
let Kitten = mongoose.model('Kitten',kittySchema);
//此时将模式编译成模型时,会把模式功能方法属性加入到模型的原型中,然后暴露在每个文档实例,即这里的Kitten实例。

加入了speak功能后,我们的猫就会叫了。

silence.speak();//控制台输出 Memo name is silence

我们有了会说话的猫,但是我们还有保存任何东西到数据库中。每个文档都可以使用save方法保存到数据库中。无论发生什么事情,save方法的第一个参数都是error。

silence.save(function(err,silence){
 if(err){
     return console.log(err);
 }else{
     console.log('保存成功');
 }
});

随着时间的流逝,我们想要看看我们之前存在数据库中的猫,我们可以通过 Kitten模型读取所有小猫的文档。

Kitten.find({name:'silence'},function(err,target){
  if(err){
      console.error(err);
  }else{
      console.log(target);
  }
});

上述代码的意思是,查找一个名字为‘silence’的猫。find的回调函数的第一个参数永远是error。target表示我们查找的对象。

如果你想找到所有小猫的记录,你可以去掉查找条件。

 Kitten.find(function(err,target){
  if(err){
      console.error(err);
  }else{
      console.log(target);
  }
});

你可以用正则查询

Kitten.find({ name: /^Fluff/ }, callback)
    原文作者:打铁大师
    原文地址: https://www.jianshu.com/p/b3508feb01ac
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞