你的位置:英亚真人首页【中国】有限公司官网 > 联系我们 > 英亚网址官网 高档前端进阶必修:自主打造高膨胀的业务组件库含源码ppt

英亚网址官网 高档前端进阶必修:自主打造高膨胀的业务组件库含源码ppt

时间:2022-09-23 12:44 点击:74 次

英亚网址官网 高档前端进阶必修:自主打造高膨胀的业务组件库含源码ppt

download:http://www.51xuebc.com/thread-470-1-1.html

前端名堂到了一定例模,基本都会沉淀自身组件库——组件库劳动于所有这个词这个词团队,是所有这个词项盘算基座。若是能开拓合乎团队需求的组件库,那么你仍是是团队的中枢主力了。本课程由大厂前端民众讲课,从一个高档前端开拓的角度做一套同样 AntD 的组件库,在这个经由中讲透优秀组件库的搭建思绪及罢了方式,让你飞快具备搭建前端基础智商的迫切才略。

Mongoose 在egg中的行使

Mongoose是什么?

Mongoose是MongoDB的一个对象模子器具,封装了很多MongoDB对文档的的增改换查等常用主义,让NodeJS操作Mongodb数据库变得更加明智简便。

在egg名堂中怎样行使?

1、安装

npm i egg-mongoose --save

2、设立

在根目次下的/config/plugin.js中设立插件

exports.mongoose = {

enable: true,

package: 'egg-mongoose',

};

3、衔余数据库

在根目次下的/config/config.default.js加多设立,其中url为咱们的数据库地址,可经过环境变量来分辨开拓环境如故破钞环境,何况详情能否行使用户名密码的数据库

const prod = process.env.npm_config_server_prod;

mongoose: {

client: {

url: prod ? 'mongodb:eggadmin:123456@localhost:27017/DbName' : 'mongodb://127.0.0.1:27017/DbName',

options: {

useUnifiedTopology: true,

},

},

},

4、设立与行使

(1)数据表设立

在app目次下新建model文献夹,在model文献夹下新建JS文献行动数据表的设立履行,底下以竹素表的设立为例

'use strict';

/**

* @description: Mongoose book Schema,

*/

module.exports = app => {

const mongoose = app.mongoose;

const Schema = mongoose.Schema;

const BookSchema = new Schema({

desc: { type: String }, /* 竹素描摹 */

name: { type: String }, /* 竹素名称 */

press: { type: String }, /* 出书社 */

author: { type: String }, /* 作家 */

image: { type: Array }, /* 竹素图片列表*/

price: { type: String }, /* 价格 */

book_type: { /* 竹素分类id */

type: Schema.Types.ObjectId,

ref: 'BookClassify',

},

user: { /* 竹素发布者id */

type: Schema.Types.ObjectId,

ref: 'User',

},

create_time: { type: String }, /* 创速即间 */

status: { type: String }, /* 状态,1:待购置,2:已购置*/

look: { type: Number } /* 阅读数目 */

});

return mongoose.model('Book', BookSchema);

};

粗略看到咱们粗略经过Schema来界说表构造,粗略指定字段的类型及有关,开拓完字段后就粗略生成model了,这里算是十分简便的设立,更多设立主义可参考文档

(2)、行使mongoose主义

设立完数据表构造后,咱们就粗略再service层中调用mongoose的主义对文档住手增删查改了,已竹素列表的贬责逻辑为例子

async findbookList(data) {

const { type, page, pageSize, desc, status, userId } = data;

const searchVal = {}

if (type) {

searchVal.book_type = mongoose.Types.ObjectId(type)

}

if (status) {

searchVal.status = status

}

if (userId) {

searchVal.user = mongoose.Types.ObjectId(userId)

并且wccftech表示,即使玩家使用的是高端显卡,使用光追功能后的《流浪》也不一定能流畅运行,除非玩家愿意自降分辨率。

作为一个极致的懒鬼,写潜艇的攻略其实在我脑海里已经转过很多次了。在过去的几年里,游戏中和潜艇相关的话题中,总是能看到很多不正确,或者曾经正确但已经不适合当前版本的对潜艇的见解。这并不是个人的问题,而是因为潜水艇是一个进入门槛高,并且相对来说非常小众的玩法。要不是最近出现了带垃圾赚钱的方法,这个东西很可能对大部分人来说都是处于一个都市怪谈的状态里。而我在刚接触潜艇的时候,也是只有4.X的攻略,而在开放了新的海图和等级上限之后,旧版本的攻略其实并不是非常适用了。

}

const search_term = {

$or: [

{ desc: { $regex: desc ? desc : '', $options: '$i' } },

{ name: { $regex: desc ? desc : '',联系我们 $options: '$i' } },

{ author: { $regex: desc ? desc : '', $options: '$i' } },

{ press: { $regex: desc ? desc : '', $options: '$i' } },

],

};

const totalNum = await this.ctx.model.Book.find(searchVal).and(search_term).countDocuments();

const result = await this.ctx.model.Book.find(searchVal)

.populate({

path: 'user',

select: { name: 1, image: 1 }

})

.populate({

path: 'book_type'

})

.and(search_term)

.sort({ create_time: -1 })

.skip((parseInt(page) - 1) * parseInt(pageSize))

.limit(parseInt(pageSize));

return result ? { bean: {

records: result,

current: page,

size: result.length,

total: totalNum,

}, ...app.config.msg.GET_SUCCESS } : app.config.msg.GET_ERR;

}

粗略看到,经过this.ctx.model.Book就粗略获得到Book的model何况粗略调用mongoose需求的主义,举例populate、find、and、sort、skip、limit 等等。

5、egg-Mongoose常用的主义

加多数据

this.ctx.model.Book.create(data,callback);

其中data为json数据构造,callback为操作后的回调函数

查询数据

获得一切数据,复返是一个数组

this.ctx.model.Book.find()

获得一个数据,复返是一个对象

this.ctx.model.Book.findOne()

条款查询

this.ctx.model.Article.find(conditions,callback);

其中conditions为查询的条款,callback为回调函数

conditions有一下几种情状:

注目数据:

this.ctx.model.Book.find({_id:5c4a19fb87ba4002a47ac4d, name: "射雕袼褙传" }, callback);

条款查询:

"$lt" 小于

"$lte" 小于便是

"$gt" 大于

"$gte" 大于便是

"$ne" 未便是

// 查询价格大于100小于200的竹素数组

this.ctx.model.Book.find({ "price": { $get:100 , $lte:200 });

或查询 OR

"$in" 一个键对应多个值

"$nin" 同上取反, 一个键不合应指定值

"$or" 多个条款匹配, 粗略嵌套 $in 行使

"$not" 同上取反, 查询与特定时势不匹配的文档

this.ctx.model.Book.find({"name":{ $in: ["射雕","倚天"]} );

删除数据

this.ctx.model.Book.remove(conditions,callback);

更新数据

this.ctx.model.Book.update(conditions, update, callback)

conditions为条款,update是更新的值对象

排序

this.ctx.model.Book.sort({ create_time: -1 });

其中-1暗示降序复返。 1暗示升序复返

铁心数目

this.ctx.model.Book.limit(number);

number暗示铁心的个数

跳过文档复返

this.ctx.model.Book.skip(number);

number暗示跳过的个数,skip频繁搭配limit完要素页的功用

条款数组and

在find背面可行使and对查询扫尾住手进一步条款挑选,相配于何况的意旨。

const search_term = {

$or: [

{ desc: { $regex: desc ? desc : '', $options: '$i' } },

{ name: { $regex: desc ? desc : '', $options: '$i' } },

{ author: { $regex: desc ? desc : '', $options: '$i' } },

{ press: { $regex: desc ? desc : '', $options: '$i' } },

],

};

this.ctx.model.Book.find().and(search_term)

有关查询populate

// 在model中设立字段时辰指定有关的表名,就粗略经过populate来住腕表的有关查询

user: { /* 竹素发布者id */

type: Schema.Types.ObjectId,

ref: 'User',

},

this.ctx.model.Book.find()

.populate({

path: 'user',

select: { name: 1, image: 1 }

})

团聚管道Aggregate

this.ctx.model.Template.aggregate([

{ $match: { name } },

{ $sort: { create_time: -1 } },

{ $group: { _id: '$name', user_id: { $first: '$modifier' } } },

]);

Mongoose团聚管道aggregate常用的操作有$project 、$match 、$group、$sort、$limit、$skip、$lookup 表有关

批量操作bulkWrite

const template_list = await ctx.model.Template.aggregate([

{ $sort: { create_time: -1 } },

{ $group: { _id: '$name', template_id: { $first: '$_id' }, label: { $first: '$label' } } },

]);

const update_value = [];

template_list.forEach(item => {

if (!item.label) {

update_value.push({

updateOne: {

filter: { _id: item.template_id },

update: { label: '' },

},

});

}

});

await ctx.model.Template.bulkWrite(update_value);

粗略住手一系列批量加多、删除、更新等操作。

mongoose还有十分多的主义粗略提供应我的明智行使,咱们在行使的时辰粗略分离业务逻辑接收得当的主义来超过咱们操作数据库的效果。

英亚网址官网

发布于:山东省声明:该文认识仅代表作家自身,搜狐号系信息发布平台,搜狐仅提供信息存储空间劳动。
本年的手机SoC芯片罕见干涉,不仅联发科推出了能抗衡高通的天玑9000旗舰芯片,而且骁龙8+ Gen1由于是台积电4nm工艺制程,澈底处置了上代功耗高、发烧大的问题,至于苹果A16芯片则莫得什么惊
咱们都默契,在芯片边界咱们在好多方面都被卡住脖子,无论是从芯片原材料的供应,已经芯片假想或制造,咱们都是受制于别人,这亦然为什么咱们国内芯片厂商发展得很发愤的原因之一,
玩过会聚游戏的网友可能都有这样的体验:某件造谣道具在拍卖行拍卖,会有人竞价,导致往返价太贵,被系统收取上流的往返手续费……若何简略省钱?《虚幻西游》手游版的玩家鲁某猜想
比拟于往年的 Android 大版块更新,本年 Android 13 无疑来的格外早。尽管在被称为"提拉米苏"的这一新版块里,谷歌为其带来了新的告知经管、按捺利用看望相册和视频、加入提高 APP 性能和效果
新酷居品第一时刻免费试玩,还有繁密优质达者共享特等生存训戒,快来新浪众测,体验各畛域最前沿、最风趣、最佳玩的居品吧~!下载客户端还能赢得专享福利哦! 9月21日上昼,华为本年的
本日音讯,微博话题中国最低廉的火车票仅售1元冲上热搜榜。 Aspyr Media的领导层通知员工表示,这个Demo并没有达到内部预期,所以开发工作暂停,公司正在寻找新的开发方向。 据极目新闻报
服务热线
官方网站:www.crawfordz.com
工作时间:周一至周六(09:00-18:00)
联系我们
QQ:234065569
邮箱:19bdfb@qq.com
地址:北京联系我们国际企业中心2284号
关注公众号

Powered by 英亚真人首页【中国】有限公司官网 RSS地图 HTML地图


英亚真人首页【中国】有限公司官网-英亚网址官网 高档前端进阶必修:自主打造高膨胀的业务组件库含源码ppt

回到顶部