@1002522146
2017-06-22T08:17:26.000000Z
字数 3062
阅读 627
node.js
Mongoose库简而言之就是对node环境中MongoDB数据库操作的封装,一种对象模型工具,可以将数据库中的数据转换为JavaScript对象供我们使用。
使用Mongoose必须先安装mongoose包
npm install mongoose
//连接Mongodb数据库
const mongoose = require("mongoose");
//连接数据库
mongoose.connect("mongodb://127.0.0.1/my_database");
mongoose.connection.once("open",()=>{
console.log("数据库连接成功");
})
//断开连接
//mongoose.disconnect();
模式为集合中的文档定义字段和字段类型。
对于在模式中的每个字段,你都需要定一个特定的值类型。受支持的类型如下:
String Number Boolean Array Buffer Date ObjectId或Oid Mixed
需要为你计划使用的每个不同的文档类型都定义一个模式。
模式需要通过mongoose的Schema属性来创建,这个属性是一个构造函数。
new Schema(definition,option)
definition(描述模式)
options 配置对象,定义与数据库中集合的交互
options常用选项
const mongoose = requier("mogoose");
//创建userSchema
const userSchema = new mongoose.Schema({
username:{
type:String,
unique:true,
index:1
},
password:String,
})
//定义并导出UserModel
module.exports = mongoose.module("user",userSchema)
Model模型,是经过Schema构造来的,是Schema的编译版本。一个model的实例直接映射为数据库中的一个文档。基于这种关系, 以后的增删改查(CURD)都要通过这个Model实现。
model(name, [schema], [collection] , [skipInit])
name参数相当于模型的名字,以后可以同过name找到模型。
schema是已创建的模式对象。
collection是要连接的集合名。
skipInit是否跳过初始化,默认是false。
//获取模型
let UserModel = mongoose.model("user",userSchema);
//通过Model对象向数据库中插入一条数据
UserModel.create({name:"舒克",age:18},(err)=>{
if(!err){
console.log("插入成功~~");
}
});
//Model对象的方法
remove(conditions, callback)
deleteOne(conditions, callback)
deleteMany(conditions, callback)
find(conditions, projection, options, callback)
findById(id, projection, options, callback)
findOne(conditions, projection, options, callback)
count(conditions, callback)
create(doc, callback)
update(conditions, doc, options, callback)
//创建文档对象
let user = new UserModel({
username:"舒克",
password:"123123"
});
//将文档对象存储到数据库中
user.save((err)=>{
if(!err){
console.log("插入成功");
}
});
//常用方法
UserModel.findOne({username:"舒克"},(err, doc)=>{
if(!err){
//从数据库中查询到的数据都是Document对象
console.log(doc instanceof UserModel);
//获取Document对象的id属性值
console.log(doc.id);
//获取对象中的指定属性
console.log(doc.username);
console.log(doc.get("username"));
//修改对象的属性,set()
doc.set("password","321");
//console.log(doc);
//提交修改
//doc.save();
//修改对象
doc.update({$set:{password:"23456"}},(err)=>{
if(!err){
console.log("修改成功");
console.log(doc.password);
}
});
//删除文档
/*doc.remove((err) =>{
if(!err){
console.log("删除成功");
}
});*/
}
})
当我们调用Model的查询方法时,都需要传递一个回调函数作为参数,mongoose会通过回调函数将查询到的结果返回。
如果我们调用查询方法时,没有传递回调函数,则查询不会发生,而是返回一个Query对象。
我们可以通过这个Query对象来控制查询的条件,以及是否查询。
let UserModel = mongoose.model("user",userSchema);
//查询数据库中的文档
let userQuery = UserModel.find({});
//exec() 可以调用query对象的exec()方法来执行查询
userQuery.exec((err,docs)=>{
if(!err){
console.log(docs);
}
});
//Query对象的方法
equals(doc)
id
get(path,[type])
set(path,value,[type])
update(update,[options],[callback])
save([callback])
remove([callback])
isNew
isInit(path)
toJSON()
toObject()