node21---mongoose
01.js
//引包
var mongoose = require('mongoose');
//创建一个数据库连接
mongoose.connect('mongodb://localhost/test'); //创建一个Cat类。 语法mongosse.model(模型名字,Schema);
//这里省略了一步,就是schema是通过new mongoose.schema({})创建的(类工厂)。
var cc = mongoose.model('Cat', { name: String , age : Number , sex : String });
//对象
var kitty = new cc({ name: "汤姆" , "sex" : "公猫"});
//var kitty1 = new cc({ a: "汤姆"}); 是不行的,因为schema定了。 kitty.save(function (err) {
console.log('meow');
}); //寻找汤姆猫,将它改为8岁。
cc.find({"name":"汤姆"},function(err,result){
console.log(result);//一条记录
var xiaomao = result[0]; //xiaomao这个变量是一个Cat的实例
xiaomao.age = 8;
xiaomao.save();
});
02.js
/**
* mongoose官网中,Guide是学习路线,API Doc是api接口。
索引不能重复,查找快
*/
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test'); var db = mongoose.connection;
db.once('open', function (callback) {
console.log("数据库成功打开");
}); //博客的结构(Schema是类的模版或者是一个创建类的工厂,他创建的类有这些属性)
var blogSchema = new mongoose.Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
//这个工厂创建的类还有这个方法(对象也有)
blogSchema.methods.showInfo = function(){
console.log(this.title);
}
//通过工厂创建一个有名类,类的名字是Blog,也可以是别的名字。
var bb = mongoose.model('Blog', blogSchema); var blog = new bb({//Blog类的对象
"title" : "博客测试",
"author" : "考拉"
}); //blog.save();
blog.showInfo();
03.js
mongoose.connect('mongodb://localhost/test'); var db = mongoose.connection;
db.once('open', function (callback) {
console.log("数据库成功打开");
}); //博客的结构(类工厂,工厂创建的类有这些属性)
var animalSchema = new mongoose.Schema({
"name" : String,
"type" : String
});
//工厂创建的类有这些方法(对象也有)
animalSchema.methods.zhaotonglei = function(callback){
this.model('Animal').find({"type":this.type},callback);
} //通过schema工厂创建一个有名的Animal类
var Animal = mongoose.model('Animal', animalSchema);
//creat是类的方法,创建对象。
Animal.create({"name":"汤姆","type":"猫"});
Animal.create({"name":"咪咪","type":"猫"});
Animal.create({"name":"小白","type":"狗"});
Animal.create({"name":"snoopy","type":"狗"}); Animal.findOne({"name":"小白"},function(err,result){
var dog = result;//result是Animal的实例
dog.zhaotonglei(function(err,result){
console.log(result);
});
});
04.js
/**
* Created by Danny on 2015/9/29 10:18.
*/
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test'); var db = mongoose.connection;
db.once('open', function (callback) {
console.log("数据库成功打开");
}); //博客的结构
var blogSchema = new mongoose.Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }]
}); //发表评论
blogSchema.methods.pinglun = function(obj,callback){
this.comments.push(obj);
this.save();
} var Blog = mongoose.model('Blog', blogSchema); //var blog = new Blog({
// "title" : "哈哈哈",
// "author" : "考拉",
// "body" : "哈哈哈哈"
//}); //寻找一个标题是哈哈哈的博客,然后发表评论
Blog.findOne({"title":"哈哈哈"},function(err,blog){
if(!blog){
return;
}
blog.pinglun({"body":"再来一个评论","date" : new Date()});
});
05.js
/**
* Created by Danny on 2015/9/29 10:18.
*/
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/xuanke'); var db = mongoose.connection;
db.once('open', function (callback) {
console.log("数据库成功打开");
}); //学生工厂
var studentSchema = new mongoose.Schema({
"name" : String,
"age" : Number,
"sex" : String
});
//实例方法,涨一岁
studentSchema.methods.zhangyisui = function(){
this.age++;
this.save();//改变数据库,要save()
}
//学生类
var Student = mongoose.model("Student",studentSchema); //课程工厂
var kechengSchema = new mongoose.Schema({
"name" : String,
"info" : String,
"student" : [studentSchema]//课程表里面会有学生的全部json,不是外键
});
//添加学生
kechengSchema.methods.tianjiaxuesheng = function(studentObj,callback){
this.student.push(studentObj);
this.save(function(){
callback();
});
} kechengSchema.methods.zhaoxuesheng = function(num,callback){
//要通过学生类去找,this是课程对象,
Student.findOne({"name":this.student[num].name},function(err,result){
callback(err,result);
});
}
//课程类
var Kecheng = mongoose.model("Kecheng",kechengSchema); //实例化几个学生
var xiaoming = new Student({"name":"小明","age":12,"sex":"男"});
xiaoming.save();
Student.creat({"name":"小hua","age":10,"sex":"nv"});
var shuxue = new Kecheng({
"name" : "数学课",
"info" : "学数学的"
}); shuxue.tianjiaxuesheng(xiaoming,function(){
console.log("添加成功");
}); //寻找学生小明
Student.findOne({"name":"小明"},function(err,student){
student.zhangyisui();//学生表改了,课程表没改,
}); //通过课程找学生
Kecheng.findOne({"name":"数学课"},function(err,kecheng){
kecheng.zhaoxuesheng(0,function(err,result){
result.zhangyisui();
console.log(result);
});
});
node21---mongoose的更多相关文章
- mongoose - 让node.js高效操作mongodb
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...
- 在mongoose中使用$match对id失效的解决方法
Topic.aggregate( //{$match:{_id:"5576b59e192868d01f75486c"}}, //not work //{$match:{title: ...
- Mongo基础使用,以及在Express项目中使用Mongoose
MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...
- mongoose数据库连接和操作
var mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/hometown'); var db = ...
- mongoose 和 mongoDB
第三方学习地址:http://blog.csdn.net/foruok/article/details/47746057 下载mongoDB https://www.mongodb.com/downl ...
- Nodejs之MEAN栈开发(三)---- 使用Mongoose创建模型及API
继续开扒我们的MEAN栈开发之路,前面两节我们学习了Express.Jade引擎并创建了几个静态页面,最后通过Heroku部署了应用. Nodejs之MEAN栈开发(一)---- 路由与控制器 Nod ...
- Mongoose Schemas定义中timestamps选项的妙用
在Node.js中使用MongoDB少不了Mongoose. 假设有如下Mongoose Schemas的定义: var ItemSchema = new mongoose.Schema({ biz: ...
- Mongodb 数据类型及Mongoose常用CURD
前言 看完了Node.js实战,其中在数据存储部分提到了Redis.Mongodb,我自己也根据书中的介绍写了几个简单的demo,在demo的过程首先遇到的问题就是数据类型和常见的CURD写法. mo ...
- Mongoose使用案例--让JSON数据直接入库MongoDB
目录 1.准备工作. 2.配置Mongoose. 3.创建目录及文件. 4.插入数据,POST提交JSON增加一条记录. 5.查询数据,取出你插入数据库的记录. 一.准备工作 使用Express4创建 ...
- 利用Mongoose来结构化模式与验证
Mongoose是一个文档对象模型(ODM)库,为MongoDB Node.js原生驱动程序提供更多的功能. 把结构化的模式应用到一个MongoDB集合,提供了验证和类型转换的好处 Mongoose通 ...
随机推荐
- 防火墙设置对外开放port
今天在部署项目时,遇到项目组其它人重整了server上的iis.结果外部訪问不了所部属的项目,通过一些渠道找到了设置方法 例如以下报错的截图: 原因是"入站ICMP规则"被重整了, ...
- bzoj4032: [HEOI2015]最短不公共子串(SAM+DP)
4032: [HEOI2015]最短不公共子串 题目:传送门 题解: 陈年老题良心%你赛膜爆嘎爷 当初做题...一眼SAM...结果只会两种直接DP的情况... 情况1: 直接设f[i][j] 表示的 ...
- 初涉springboot
1.首先,我们需要了解微服务是什么? 微服务 (Microservices) 是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 (Small Building Blocks) 为基础,利用 ...
- apache配置httpd.conf的webapp根目录(基于appserv服务)
只要修改httpd.conf中两个配置项的值即可: DocumentRoot "E:/workspacePHP/what" <Directory "E:/works ...
- Ubuntu16.04下沙盒数据导入到 Neo4j 数据库(图文详解)
不多说,直接上干货! 参考博客 http://blog.csdn.net/u012318074/article/details/72793914 (表示感谢) 前期博客 Neo4j沙盒实验申请过 ...
- spring事务,TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
在aop配置事务控制或注解式控制事务中,try...catch...会使事务失效,可在catch中抛出运行时异常throw new RuntimeException(e)或者手动回滚Transacti ...
- Vue.js 2.x Development Build With Hot Reloading For External Server (using Webpack template)
This article assuming you created your project using webpack template. vue init webpack <PROJECT_ ...
- Mac 如何寻找Mac自带的IDLE
Mac 如何寻找Mac自带的IDLE 每次要打开IDLE时,需要如下动作:打开terminal --> 输入idle --> 回车,就自动打开IDLE了 图标如下: 选择在“Finder中 ...
- css——样式的优先级
样式的优先级 在p中有id,class,标签,行内样式,它们的优先级: 1.id 样式>class样式>标签样式 2.行内样式>内嵌样式>外部样式 强制优先级 比如我希望上面的 ...
- "随笔"列表 - 按时间先后顺序排列
这是一个测试 linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器 美化博客园 virtual box虚拟机在linux下设置共享文件夹 纯净版linux (debian)挂载Virtua ...