mongoose用法
下载
首先你需要有个MongoDB数据库,然后进入MongoDB的文件夹中的bin文件启动它(使用cmd)
mongod.exe -dbpath xxxxxxx(自己指定路径,mongoDB数据文件存放的地方)
启动好后,下载mongoose插件
npm install mongoose
mongoose的使用
mongoose的引用
在文件中,通过require引用
let mongoose = require('mongoose');
使用mongoose连接MongoDB数据库
使用mongoose连接MongoDB有以下几种形式:
1.最简单的(无密码,用户名等)
mongoose.connect(‘mongodb://localhost/database’)
2.有密码、用户名、参数等
mongoose.connect(‘mongodb://username:password@host:port/database?options…’);
3.将需要传入的参数进行封装
let url = "xxxxx";
let options = {
db: { native_parser: true },
server: { poolSize: 5 },
replset: { rs_name: 'myReplicaSetName' },
user: 'myUserName',
pass: 'myPassword'
...
}
mongoose.connect(url,options);
//这里的options优先于连接字符串中传递的选项(第二种方法的option)
第三种方法options中可写入的有:
键名 | 描述 |
---|---|
db | 数据库设置 |
server | 服务器设置 |
replset | 副本集设置 |
user | 用户名 |
pass | 密码 |
auth | 鉴权选项 |
mongos | 连接多个数据库 |
例子(第一种方法)如下
let mongoose = require('mongoose'); //引用
mongoose.connect("mongodb://127.0.0.1:27017/try",(err)=>{
if(err){
console.log(“连接失败”);
}else{
console.log("连接成功");
...
}
})
另外,如果需要细致的监听connect连接的状态从而再执行下一步,可这样
mongoose.connection.on("状态",()=>{
console.log("xxx");
....
})
状态分为以下几种:
connected 已连接
error 连接失败
disconnected 断开连接
......
连接多个数据库
mongoose.connect('urlA,urlB,...', {
mongos : true //必须的
},[callback])
创建数据库,表以及字段名
Schema(创建字段名)
用来定义字段名和类型,支持的类型包括以下8种:
类型 | 描述 |
---|---|
String | 字符串 |
Number | 数字 |
Date | 日期 |
Buffer | 二进制 |
Boolean | 布尔值 |
Mixed | 混合类型 |
ObjectId | 对象ID |
Array | 数组 |
使用方法:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var mySchema = new Schema({
title: String,
author: String,
username: String,
password: Number
});
需要注意:声明字段类型只能通过以下两种方法
1. 声明的类型开头大写如
title : String
- 声明的类型使用全小写的话用引号括住
title : ‘string’
Model(将Schema模型实例化)
将Schema实例化,这一步骤是必须的!
var schema = new mongoose.Schema({
username:String,
password: "number"
});
var Model = mongoose.model('Model', schema);
将数据存入到创建的表中
有三种方法,
方法一:save()
实例化文档document
var mongoose = require('mongoose');
mongoose.connect("mongodb://127.0.0.1:27017/try", function(err) {
if(err){
console.log('连接失败');
}else{
console.log('连接成功');
var schema = new mongoose.Schema({
username:"string",
password:"number"
});
var Model = mongoose.model('Model', schema);
var doc1 = new Model({
username:"admin",
password:123456
});
doc1.save(); //这一步骤是必须的!save函数中可以使用cb
}
});
方法二:create()
model中的create()方法,该方法可同时新增多个文档
Model.create(docs,[callback])
新增{username:”John”}以及{username:”Jonny”}
var mongoose = require('mongoose');
mongoose.connect("mongodb://127.0.0.1:27017/try", function(err) {
if(!err){
var schema = new mongoose.Schema({
username:"string",
password:"number"
});
var temp = mongoose.model('temp', schema);
temp.create(
{username:"John"},
{username:"Jonny"},function(err,doc1,doc2){
console.log(doc1);
console.log(doc2);
//回调函数
});
}
});
方法三:insertMany()
Model.insertMany(doc(s), [options], [callback])
新增{username:”John”}以及{username:”Jonny”}
var mongoose = require('mongoose');
mongoose.connect("mongodb://127.0.0.1:27017/try", function(err) {
if(!err){
var schema = new mongoose.Schema({
username:"string",
password:"number"
});
var temp = mongoose.model('temp', schema);
temp.insertMany(
{username:"John"},
{username:"Jonny"},function(err,doc1,doc2){
console.log(doc1);
console.log(doc2);
//回调函数
});
}
});
这三种方法中,只有save()方法需要一个一个save数据插入的,其他两个可以直接多个数据插入。
另外,以上的创建数据库,表格,字段名等等示例中,如果数据库中已存在的,他将不会重新创建,而只会添加数据,如
var mongoose = require('mongoose');
mongoose.connect("mongodb://127.0.0.1:27017/try", function(err) {
if(!err){
...
});
上面的代码示例中无数次连接try数据库。这里代表着两种意思:
- 若MongoDB数据库中有try数据库直接连接
- 若MongoDB数据库中没有try数据库则创建
table(表)、字段名也同上。另外,若是创建完schema之后需要添加漏掉的字段名,可这样
var MySchema = new Schema({ name: 'string'});
MySchema.add({password:"number"});