node.js 学习笔记 08

2017-06-22  本文已影响0人  GodlinE

mongoose 的使用

//导入包
var mongoose = require("mongoose");
//链接数据库
mongoose.connect('mongodb://localhost:27017/test2');
//创建一个类
//使用 model 方法,这个方法需要两个参数
//第一个参数表示类的名称
//第二个参数表示概要
//这个概要是一个字典(对象),这个对象可以放置创建的类所需要的属性
//这个 schema 中放置属性,需要给每一个属性设置对应的数据类型
//所以这个对象中的 Key 值表示对应的属性,value 表示属性的数据类型
var Cat = mongoose.model('Cat',{name:String});
//实例化一个对象
var tom = new Cat({'name':'tom'});
//把这个对象持久化,就是把这个对象保存到数据库中
tom.save(
    function(err){
        console.log(err);
    }else{
        console.log('maomao');
    }
);
//使用 find 方法查询
// mongoose 的结构是 数据库 类(集合) 对象(文档)
//第一个参数表示条件,第二个参数表示回调
Cat.find({'name':'tom'},function(err,result){
    console.log(result);
    var findObj = result[0];
    findObj.name = 'mimi';
    findObj.save();
})

使用 schema 设置实例方法

var mongoose = require('mongoose');
mongoose.connect ('mongodb://localhost:27017/test2');
var db = mongoose.connection;
//判断是否链接有错误和判断数据库是否打开,两者判断一个就可以
db.once('open',function(){
    console.log('opened');
})
//使用 Schema 创建一个模型
//如果采用下面的写法来创建对应的模型,一般只能设置属性
//没有办法舒勇 schema 设置方法,所以我们一般会独立创建一个 schema 对象
//这样既可以设置属性,也可以设置方法
var blogSchema = mongoose.Schema({
    'title':String,
    'author':String,
    'time':Date,
    'body':String,
    'comment':[{'body':String,'commentTime':Date}]
})
//当类的模型设置好以后,我们就可以又一个方法,所以我们需要使用 schema 来设置对应的方法
//我们设置一个实例方法
//methods 表示对象方法就是实例方法
//当使用 schema 扩展方法后,每一个对应的实例就会有这个方法,所以里面的 this 表示实例对象
blogSchema.methods.showInfo = function(){
    console.log(this.title);
};
var Blog = mongoose.model('Blog',blogSchema);
//保存实例
var myBlog = new Blog({
    'title':'今天大家不要睡觉,不要打豆豆',
    'author':'大家',
    'time':new Date();
    'body':'asiejhhlkjhflkjqhwlksjdhc',
    'comment':[{'body':'dfhoiuwhoiuhc','commentTime':new Date()}]
});
myBlog.save();
myBlog.showInfo();
Blog.create({
    'title': '今天大-家不要睡觉,.可以写代码',
    'author': '大家1',
    'time': new Date(),
    'body': 'fafdsafdasfdasfasdk;fjas;l',
    'comment': [{'body': 'dasfdasfdasf', 'commentTime': new Date()}]
})
var mongoose = require('mongoose');
mongoose.connect('mongodb://locakhost:27017/test2');
var db = mongoose.connection;
db.once('open',function(){
    console.log('open');
});
//设置一个动物的 schema
var animteShema = mongoose.Schema({
    'name':String,
    'type':String
})
//因为我们需要给设置调用一个方法,所以我们需要在 schema 中扩张一个实例方法
//需要一个参数,这个参数第一个回调,用来把找到的数据传递出去
animteShema.methods.findSameType = function(callBack){
    //我们需要使用类来查找符合条件的东西
    this.model('Aimate').find({'type':this.type},function(){
        callBack(err,result);
    })
};
//使用 schema 设置对应的动物类
var Animate = mongoose.model('Animate',animteSchema);
//创建多个动物保存在数据库中
Animate.create({
    'name':'tom',
    'type':'cat'
});
Animate.create({
    'name':'mimi',
    'type':'cat'
});
Animate.create({
    'name':'xaiobai',
    'type':'dog'
});
Animate.create({
    'name':'xiaohang',
    'type':'dog'
})
//查找名称是 tom 的猫
Animate.findOne({'name':'tom'},function(err,resulte){
    //result 表示的是一个实例
    console.log(result);
    //当找到后,查找和他同一类型的所有的
    //我们可以把查找同一类型的过程封装成一个函数,这个函数由 result 这个实例来调用
    var findObj = resulte;
    findObj.findSameType(function(err,result){
        console.log(result);
    })
})

微博查询

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test2');
var db = mongoose.connection;
db.once('open',function(){
    console.log('opened');
});
var blogSchema = mongoose.Schema({
    'title':String,
    'author':String,
    'body':String,
    'comments':[{'body':String,'comTime':Date}]
})
//设置一个实例方法,第一个参数表示评论,第二个参数回调
blogSchema.methods.showMyCon = function(comObj,callBack){
    this.comments.push(comObj);
    this.save();
};
var Blog = mongoose.model('Blog',blogSchema);
var myBlog = new Blog({
    'title':'我要吃饭了',
    'author':'大家',
    'body':'红烧肉,黄焖鸡米饭',
    'comments':[{'body':'dasfasdf','comTime':new Date()}]
});
//添加持久
myBlog.save();
Blog.findOne({'title':'我要吃饭了'},function(err,blog){
    if(!blog){
        //没有值就返回停止
        return;
    }
    //发表评论,设置成一个函数,就是我们获取到的 blog 来调用
    //需要使用 schema 设置一个实例方法
    blog.showMyCon({'body':'我也要吃饭了','comTime':new Date()});
})

课程表设置

var mongoose = require('mongoose');
mongoose.connect('mongodb://locallhost:27017/test3');
var db = mongoose.connection;
db.once('open',function(){
    console.log('open');
})
//设置课程的 schema
//每一学生就是一个对象,所以我们可以使用一个学生的 schema 来设置学生对象
var studentSchema = mongoose.Scheme({
    'name':String,
    'age':Number,
    'sec':String
})
//设置一个方法,用来表示让小明的年龄加一岁
studentSchema.methods.addOneYear = function(){
    this.age ++;
    this.save();
}
var curseSchema = mongoose.Schema({
    'name':String,
    'students':[studentSchema]
})
//添加一个添加学生的方法
curseSchema.methods.addStudent = function(stuObj){
    this.students.push(stuObj);
    this.save();
}
//创建学生和课程的模型
var Student = mongoose.model('Student',studentsSchema);
//添加一个查找学生的方法
curseSchema.methods.findStu = function(num,callBack){
    Student.findOne({'name':this.students[num].name},function(err,result){
        callBack(err,result);
    })
};
var Curse = mongoose.model('Curse',curseSchema);
//分别创建学生的实例和课程实例
var xiaoming = new Student({'name':'xiaoming','age':12,'sex':'man'});
xiaoming.save();
var chinese = new Curse({
    'name';'chinese'
});
chinese.save();
//当小明如果选取了chinese,那么就给这个课程添加小明这个学生
//当查找到课程的名称是 chinese 的时候我们就给当前的课程添加小明这个学生
/**Curse.findOne({'name';'chinese'},function(err,curse11){
    if(!curse11){
        return;
    }
    需要使用当前的课程添加学生,所以给课程的 schema 添加一个方法
    curse11.addStudent(xiaoming);
})
**/
chinese.addStudent(xiaoming);
//当我找到小明后,让小明的年龄长大一岁
    Student.findOne({'name':'xiaoming'},function(err,stu11){
        //让小明的年龄加一
        stu11.addOneYear();
    })

//当我们找到对应的课程的名称是 chinese 后,然后在对应的选取这个课程的学生
Curse.findOne({'name':'chinese'},function(err,curseC){
    if(!curseC){
        return;
    }
    curseC.findStu(0,function(err,result){
        console.log(result);
    })
})

创建静态方法

var Student = require('./models/Student.js');
var db = require('./models/db.js');
//静态方法使用Student来调用
//首先插入数据
Student.create({'name':'xiaoming12','age':18,'sex':'man_woman'});
//查找
Student.findData({},function (err, result) {
    console.log(result);

})

模块化

var mongoose = require('mongoose');

//设置一个schema
var studentSchema = new mongoose.Schema({
    'name':String,
    'age':Number,
    'sex':String
})
//设置一静态方法
//设置两个参数,第一个参数条件,第二个表示回调
studentSchema.statics.findData = function (json,callBack) {
    //找到模型然后设置find方法
    this.model('Student').find(json,callBack);
    
    
}
//使用schema创建模型
var Student = mongoose.model('Student',studentSchema);

//传递Student
module.exports = Student;
/**
 * Created by Administrator on 2017/6/21.
 */

//用来设置和数据库之间的连接,为了以后开发的灵活性
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test33');
var db = mongoose.connection;
db.once('open',function () {
    console.log('open');

});
//把这个db传递出去,传一个对象
module.exports = db;

var express = require('express');
var Student = require('./models/Student.js');
var db = require('./models/db.js');
//设置渲染
var app = express();
app.set('view engine','ejs');

//设置路由处理
//获取student中的梭有的数据
// var rsult = []


 Student.find({},function (err,result) {

     app.get('/',function (req,res) {


         //渲染界面
         res.render('index',{
             result:result
         })




     })



 });

// app.get('/',function (req,res) {
//     res.render('index',{
//         result:results
//     })
//    
// })
app.listen(3000);

webSocket

//使用原生的node渲染界面
var http = require('http');
var fs = require('fs');
var server = http.createServer(function (req,res) {
    if(req.url == '/'){
        //读取文件
        fs.readFile('./index.html',function (err,data) {

            res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});

            res.end(data);

        })
    }
});
var socket =require('socket.io')(server);
//当接受到对应的请求我们回复信息
socket.on('connection',function (socket) {
    console.log('我接受到了一个连接');

    //做处理
    //当接受到客户端的一些信息后我就做出处理
    socket.on('tiwen',function (mes) {
        //mes:表示提问时候的信息
        //接受提问后给对应的客户端回复
        console.log(mes);
        socket.emit('reply','我已经给你回复了');
    })
})

server.listen(3000,'127.0.0.1');

webScoket 画板

/**
 * Created by Administrator on 2017/6/21.
 */

//使用原生的node渲染界面
var http = require('http');
var fs = require('fs');
var server = http.createServer(function (req,res) {
    if(req.url == '/'){
        //读取文件
        fs.readFile('./huaban.html',function (err,data) {

            res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});

            res.end(data);
        })
    }
});
var socket =require('socket.io')(server);
//当接受到对应的请求我们回复信息
socket.on('connection',function (socket) {
    console.log('我接受到了一个连接');

    //做处理
    //当接受到客户端的一些信息后我就做出处理
    socket.on('hua',function (msg) {
        //mes:表示提问时候的信息
        //接受提问后给对应的客户端回复
        // console.log(mes);
        // socket.emit('huida',mes);
        socket.emit('huida',msg);
    })
})
server.listen(3000,'127.0.0.1');
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        canvas{
            border: 1px solid #000;
        }
    </style>
</head>
<body>
    <canvas width="1000" height="1000" id="canvas"></canvas>

    <script type="text/javascript" src="/socket.io/socket.io.js"></script>
    <script type="text/javascript">
        var canvas = document.getElementById("canvas");
        var ctx = canvas.getContext("2d");

        var color = ["red","blue","green","black","skyblue","pink","white"];

        var mycolor = color[parseInt(Math.random() * color.length)];

        canvas.onmousedown = function(){
            canvas.addEventListener("mousemove", handler, true); 
        }

        canvas.onmouseup = function(){
            canvas.removeEventListener("mousemove", handler, true);
        }

        function handler(e){
            ctx.beginPath();
            ctx.arc(e.pageX,e.pageY,20,0,Math.PI*2,true);
            ctx.fillStyle = mycolor;
            ctx.fill();

            //触发事件
            socket.emit("hua",{"x":e.pageX,"y":e.pageY,"color":mycolor});
        }

        var socket = io();
         
        socket.on("huida",function(msg){
            ctx.beginPath();
            ctx.arc(msg.x,msg.y,20,0,Math.PI*2,true);
            ctx.fillStyle = msg.color;
            ctx.fill();
        });
    </script>
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读