Nodejs学习笔记一

异步编程

  • Promise
    Promise出现的目的是解决Nodejs异步编程回调地狱的问题。
    Promise提供了两个函数,将结果传递出去,Ture–>res,Flase–>rej.
    在这里插入图片描述
  • async
    • 普通函数变成异步函数
    • 异步函数的返回值是promise对象
    • 在异步函数中使用throw关键字进行错误的抛出
    • await关键字
    • promisify 方法

    mongo数据库

    利用nodejs操作mongo数据库
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/playgroud',{useNewUrlParser:true})  
// 1.palygroud 为数据库名称,2.自动建立数据库
     .then(()=>console.log('数据库连接成功'))
     .catch(err => console.log(err,'数据库连接失败'))
创建集合
   两步走:
   1、对集合设定规则
   2、创建集合,mongoose.Schema构造函数的实例即可创建集合。
// 创建集合规则
const courseSchema = new mongoose.Schema({
        name:String,
        author:String,
        isPubublished:Boolean
        })
// 使用规则创建集合
const Course = mongoose.model('Course',courseSchema)
// 添加数据
const course = new Course({
           name:'nodejs',
           author:'heima',
           isPubished:true
           })
course.save()

3、另一种插入数据的方式, 所有的数据库操作都是异步操作

Course.create({name:'nodejs', author:'heima',isPubished:true},(err,doc)=>{
             console.log(err)
             console.log(doc)
             })  
插入数据
  • import 导入数据,要将mongodb数据库的安装目录,放置在环境变量中

mongoimport -d 数据库名称 -c 集合名称 --file 要导入的数据文件

查询数据
Course.find().then(result = >console.log(result))
// 条件查找
Course.find({_id:'5s7c'}).then(result = >console.log(result))
// 返回一条数据
Course.findOne().then(result = >console.log(result))
// 表达式查询
// gt 大于 lt 小于,$in 表示包含
Course.find({age:{$gt:20,$lt:40}).then(result = >console.log(result))
// select 语句,不想要的字段前加-
Course.find().select("name eamil -_id").then(result = >console.log(result))
// sort 排序 升序 
Course.find().sort("age").then(result = >console.log(result))
Course.find().sort("-age").then(result = >console.log(result)) //降序
// skip 跳过,limit限制查询数量
删除文档
// 删除单个
course.findOneAndDelete({_id:''}).then(result = >console.log(result))
course.deletMany({}).then(result = >console.log(result))
更新文档
course.updateOne({name:'lisi'},{name:'ligoudan'}).then(result = >console.log(result))
//更新多个
course.updateMany({查询条件}{要改的值}).then(result = >console.log(result))
mongoose验证
  • 验证字段的格式
  • required:true 必传字段
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/playgroud',{useNewUrlParser:true})  
     .then(()=>console.log('数据库连接成功'))
     .catch(err => console.log(err,'数据库连接失败'))
const courseSchema = new mongoose.Schema({
        title:{
        type:String,
        required:[true,'请传入文章标题'], // 必传的,
        minlength:2,
        maxlength:200, // 传入的长度
        trim:true // 去除字符串两侧的空格
        },//title的格式
        category :{
        type:String,
        enum:['HTML','CSS','JS','PYTHON']//指定类别
        },
        author:{
        type:String,
        validate:{
        validator:v=>{
        return v && v.length >4
        },
        message:'传入的值不符合验证规则'
        
    })
const Post = mongoose.model('Post',postSchema)
集合关联
  • 使用id对集合进行关联
  • 使用populate方法进行关联集合查询
const User = mongoose.model('User',new mongoose.Schema({name:{type:String}}))
const Post = mongoose.model('Post',new mongoose.Schema({
          title:{type:String},
          author:{type:mongoose.Schema.Types.ObjectId,ref:'User'}
}))
//联合查询
Post.find()
    .populate('author')
    .then((err,result)=>console.log(result))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值