首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ​基于H5的音频播放器开发(2):前后端篇

    /utils/mongoose' const fileSchema = new mongoose.Schema({ type :String , // 保留字段,文件分类 title..., // 封面文件在项目服务器的存储路径 lrc :String , // 文件在项目服务器的存储路径 singer:String,//歌手 createAt: { // 上传时间...接下来就是遍历文件夹下的所有文件,完成后,解压包的文件也顺带删掉 查询 // 查询列表 export const getAudioList=async (ctx,next)=>{ const list...一般标准的lyric文件是由[时间]内容的tag标签组成,如下图: ? 思路就是:拆分时间和歌词,组合成对象,检索对象,展示歌词。 ? 由于篇幅原因,这里写不下太多了。...思路就是:正则读取方括号内时间内容,转化为秒。当currentTime变动时,遍历这个数组。找到与currentTime最接近的歌词段。把它作为一个状态显示出来。 以上。

    2K20

    node.js后端+小程序前端+mongoDB(增删改查)

    高性能: MongoDB采用了索引、聚合框架和内置分片等技术,以提供高性能的数据查询和检索。它还具有内置的缓存机制,能够有效地减轻数据库的负载。...这有助于提高查询性能和负载均衡。 丰富的查询语言: MongoDB提供强大而灵活的查询语言,支持各种条件查询、范围查询、正则表达式等。同时,它还支持索引,加速查询操作。...这使得Node.js在处理I/O密集型任务时表现出色,能够实现更高的吞吐量和更低的响应时间。...轻量和高效: Node.js本身是一个轻量级的运行时环境,占用资源较少,启动时间短。这使得它适用于构建高效的后端服务和微服务架构。...db.js const mongoose = require('mongoose') //连接mongodb数据库 mongoose.connect("mongodb://localhost:27017

    34010

    我的NodeJS学习之路6(数据库设计及开发)

    先学习以下Mongoose的基本用法 将Mongoose集成到项目中 npm install --save mongoose 连接数据库 var mongoose = require('mongoose...这样的查询速度是最快的。...如果既需要通过A查询B,又需要通过B查询A(如作者和文章,需要查询某作者下的所有文章,展示文章的时候,有需要展示作者的相关信息),那么可以在子集合中通过一个唯一字段关联父集合。...加入时间戳 所谓时间戳,就是当我们对数据进行增加或修改的时候,数据库能自动记录增加时间和修改时间,不需要手动来维护。...定义时间戳,很简单,在new Schema()的时候,将时间戳的定义当作第二个参数传入即可: new Schema({xxx: xxx}, {timestamps: {createdAt: 'created_at

    2.8K10

    你真的了解mongoose吗?

    callback Mongoose 中所有传入 callback 的查询,其格式都是 callback(error, result) 这种形式。...如果出错,则 error 是出错信息,result 是 null;如果查询成功,则 error 是 null, result 是查询结果,查询结果的结构形式是根据查询方法的不同而有不同形式的。...如果没有操作符或操作符不是 update 操作符,统一被视为 set 操作(mongoose 特有)字段相关操作符符号描述set设置字段值currentDate设置字段值为当前时间,可以是 Date 或时间戳格式...sort:如果查询条件找到多个文档,则设置排序顺序以选择要更新哪个文档。 maxTimeMS:为查询设置时间限制。 upsert:布尔值,如果对象不存在,则创建它。默认值为 false。...看完Models,最后让我们来看下在实战中比较有用的Populate 联表(Populate) Mongoose 的 populate() 可以连表查询,即在另外的集合中引用其文档。

    41.6K30

    架构和数据库

    下面两个方法更像是第一个方法的拆分,但是下面两个语义更加清晰 插入文档时,如果没有给文档指定 _id 属性,则数据库会自动为文档添加 _id,可以自己指定 _id 该属性为文档的唯一标识,不可重复,根据时间戳....find({}) 可以接受一个对象作为条件参数 {属性名1:值,属性名2:值} 查询属性是指定值的文档 db..findOne({}) 用来查询集合中符合条件的第一个文档 db.....find({}).count() 查询所有结果的数量 修改集合中符合条件的文档 db..update({查询条件},{新对象},{配置}) 默认只修改一个 db.....updateOne({查询条件},{新对象}) 修改一个符合条件的文档 db..updateMany({查询条件},{新对象}) 同时修改多个符合条件的文档 db....使用 npm install mongoose命令下载 使用 const mongoose = require('mongoose'); 引入 mongoose 使用 mongoose.connect

    8010

    04_数据库

    下面两个方法更像是第一个方法的拆分,但是下面两个语义更加清晰 插入文档时,如果没有给文档指定 _id 属性,则数据库会自动为文档添加 _id,可以自己指定 _id 该属性为文档的唯一标识,不可重复,根据时间戳....findOne({}) 用来查询集合中符合条件的第一个文档 db..find({}).count() 查询所有结果的数量 修改集合中符合条件的文档 db.....update({查询条件},{新对象},{配置}) 默认只修改一个 db..updateOne({查询条件},{新对象}) 修改一个符合条件的文档 db....使用 npm install mongoose命令下载 使用 const mongoose = require('mongoose'); 引入 mongoose 使用 mongoose.connect...], [options], [callback]) 查询符合条件的第一个文档 conditions 查询条件 projection 投影 需要获取的字段 两种方式 {name: 1

    7010

    万字超全 ElasticSearch 监控指南

    资源饱和度和错误 2.1 搜索性能指标 ES 查询流程介绍 ES 查询可以分为两种: 根据 ID 查询 Doc,可实时检索写入的数据。...检索流程:检索内存中 Translog → 检索磁盘 Translog → 检索磁盘 Segment; 根据 query 查询 Doc,近实时检索写入的数据。...检索策略可分为三大类: QUERY_AND_FETCH:查询完就返回整个 Doc 内容,对应根据 ID 查询 Doc; QUERY_THEN_FETCH:先查询出对应的 Doc id ,然后再根据 Doc...+ size 的空优先队列; Node 3 将查询请求转发到索引的每个主分片或副本分片中。...每个分片在本地执行查询并添加结果到大小为 from + size 的本地有序优先队列中; 每个分片返回各自优先队列中所有文档的 ID 和排序值给协调节点,也就是 NODE 3 ,它合并这些值到自己的优先队列中来产生一个全局排序后的结果列表

    94312

    Elasitcsearch CPU 使用率突然飙升,怎么办?

    上图更直观的解释了线程池、队列、客户端请求之间的关系,拿检索线程为例: 当请求比较少时,线程池完全可以处理过来; 当前再多一些时,需要线程池队列排队; 如果请求再多,就超出了线程池和队列的最大负载,导致异常报错...如果可能,提交较小的请求并在它们之间留出更多时间。 这里的较小有多小?需要结合业务实际、结合线程池和队列大小不断调出最优值。 4.3 取消长时间运行的搜索 长时间运行的搜索会阻塞搜索线程池中的线程。...actions=*search&detailed 上述命令行响应的描述包含检索请求及其查询细节,其中:running_time_in_nanos 显示搜索运行了多长时间。...避免策略包含但不限于: 避免脚本 script 检索。 少使用:fuzzy、regexp、prefix、wildcard检索 避免将 range 检索应用到 text 和 keyword 类型。...5、小结 建议提前做好集群监控和指标预警工作,“防范于未然”,结合节点的 CPU 核数最大化的提升线程池和队列的使用率。 你在实战环节有没有遇到高 CPU 利用率问题?你是如何解决的呢?

    1.7K40

    干货满满丨万字超全 ElasticSearch 监控指南

    2.1 搜索性能指标 ES 查询流程介绍 ES 查询可以分为两种: 根据 ID 查询 Doc,可实时检索写入的数据。...检索流程:检索内存中 Translog → 检索磁盘 Translog → 检索磁盘 Segment; 根据 query 查询 Doc,近实时检索写入的数据。...检索策略可分为三大类: QUERY_AND_FETCH:查询完就返回整个 Doc 内容,对应根据 ID 查询 Doc; QUERY_THEN_FETCH:先查询出对应的 Doc id ,然后再根据 Doc...+ size 的空优先队列; Node 3 将查询请求转发到索引的每个主分片或副本分片中。...每个分片在本地执行查询并添加结果到大小为 from + size 的本地有序优先队列中; 每个分片返回各自优先队列中所有文档的 ID 和排序值给协调节点,也就是 NODE 3 ,它合并这些值到自己的优先队列中来产生一个全局排序后的结果列表

    1.6K10

    三步带你开发一个短链接生成平台

    前段时间在开发【葡萄城社区】公众号时有一个功能是需要用网页授权认证地址生成二维码,但类似像下面这样的Url 即便是看也觉得很头疼了https://open.weixin.qq.com/connect/oauth2...2.通过短链接查询长连接并重定向。 为了高效,我这使用的是node和mongodb,下面我们就来开始动手吧。...connectTimeoutMS: 5000000, } } console.log("Connection local mongo db"); 数据库模型定义 因为我们的对应关系是需要通过短链接查询长连接...res.redirect(result.longUrl); }) }); module.exports = router; 这个页面为了便于快速跳转,我们就使用get接收参数,这个页面功能就很简单了,接参查询并跳转...接收短链接码 var shortUrl = req.params.shortUrl; 连接数据库查询并跳转 mongoose.connect(setup.mongo_db, setup.mongo_options

    3.1K30

    Node使用火焰图优化CPU爆涨

    看火焰图的时候越图形越尖说明越正常,横条越长说明占用时间越长,从图中可以看到压测的五分钟里,CPU占用时间长达两分钟,其中绝大多数被红框中占据,来张大图 ?...从completeMany这里破案了,这是mongoose中的一个方法,作用是将查询到的结果进行包装,使结果中的每一个文档成为mongoose文档,使之可以继续使用mongoose提供的方法。...query lean 文档上说了如果使用了lean那么查询返回的将是一个javascript objects, not Mongoose Documents 。...优化 回到问题上来,看到mongoose Document的问题,7月2号到7月3号后,为什么会突然导致CPU暴涨恍然大悟,自己之前review代码,看着代码没问题,但是忽略了这一个版本因为业务调整导致查询压力大大增加...await model.Package.find(query).lean(); 那说到频繁的处理mongoose Document导致的性能问题,那其实还有一个优化点可以做,其实在查询的时候多多使用find

    2.7K40

    mogoose 创建数据库并增删改查

    下载 npm i mongoose -s 连接数据库 const mongoose = require("mongoose"); mongoose.connect(dbURL); const db =...mongoose.connection; db.on("error", () => { console.log("链接失败"); }); db.on("open", () => {...定义对象ID Array 定义数组 Decimal128 Map 约束能用对象的方法描述数据类型 是否必须 是否重复 默认值 等,如下定义了一个用户表结构 注意:如果定义表结构时没有定义_id,mongoose...会自己添加一个该字段,该字段不会重复,类型为ObjectId,通过findById()查询 const userSachem = new mongoose.Schema( { name...添加`createdAt updatedAt`创建时间和更新时间两个字段 } ); 如果在定义了结构后需要添加新字段,在实例上使用add()方法 创建表model 通过mongoose.model

    5.1K30

    Node.js 服务连接 MongoDB 处理最佳实践

    话不多说,先上代码: const mongoose = require('mongoose') const config = require('....mongoose.set('bufferCommands', false) /* B */ function connectMongoDB(address) { try { mongoose.connect...mongoose 自己会维护一个默认最大数量为 5 的连接池,只有当你发现有一些慢查询可能阻塞快查询时才应该考虑增大 poolSize。...解决方法也不是没有,就是比较鸡肋:在 mongoose 连接的 'error' 事件监听回调函数中尝试重连。但是需要设置最大重试次数,否则会发生内存泄露。...比较鸡肋的原因是,如果首次连接没有成功,短时间内尝试重连几次貌似也无济于事。因此,使用这套连接方式务必要注意数据库保持可连接状态。或者读者们如果有更好的解决方案,也希望能不吝赐教。 完。

    3.5K20
    领券