如果你有一个长数组,然后需要从指定键值开始获取多少个数据,那么就需要这个了 PHP内置了 array_slice(array,start,length,preserve) 方法就可以实现这个了,然后还可以简单封装一下...array:必需,需要返回的数组 start:必需。...规定取出元素的开始位置。 0 = 第一个元素。 length:可选。数值。规定被返回数组的长度。 preserve:可选。规定函数是保留键名还是重置键名。true:保留,false:不保留 <?
default: 任意类型或函数,为路径设置一个默认的值。如果值是一个函数,则函数的返回值用作默认值。...select: 布尔值 指定 query 的默认 projections validate: 函数,对属性添加验证函数。...limit: 指定返回结果的最大数量 skip: 指定要跳过的文档数量 lean: 返回普通的 js 对象,而不是 Mongoose Documents。...findOne({ _id: undefined }) 相当于 findOne({}),返回任意一条数据。...findOne 该方法返回查找到的所有实例的第一个 Model.findOne(conditions, [projection], [options], [callback]) 如果查询条件是 _id
如果值为真,为此属性添加require验证器 default: 任何值或函数 设置此路径默认值,如果是函数m,函数返回值为默认值 select: 布尔值 指定query的默认projections validate...回调 connect()函数接受回调函数,或返回一个Promise keepAlive 对于长期运行的后台应用,启用毫秒级 keepAlive 是一个精明的操作。...是在异步函数执行时函数传入的控制函数。...stuff next() }) 在 mongoose5.x 中,除了手动调用 next 函数,还可以返回一个 Promise,甚至是 async/await。...返回的一切对象: const mongoose = require('mongoose') const Schema = mongoose.Schema; const personSchema =
, callback);其中,filter 表示查询条件,update 表示更新操作,projection 表示指定返回的字段,options 表示查询选项,callback 表示回调函数。...其中,Schema 表示集合(表)的结构,Model 表示集合(表)的构造函数,可以通过 Model 对集合(表)进行增删改查数据的操作。...设计 Schema 时需要指定集合(表)中每个字段的数据类型和约束条件,例如字段类型可以是 String、Number、Date、Boolean 等,约束条件可以是 required(必填项)、unique...发布 Model 时,需要将 Schema 传入 mongoose.model() 方法中,生成集合(表)的构造函数。...在查询数据时,可以通过 Model 对象进行查询,例如 find() 方法查询所有数据、findOne() 方法查询单个数据等。
db.users.findOne({age:25}).name; // 查询一个符合条件的文档对象的属性值 db.users.findOne({age:25}).count(); // ...注意:不同的 MongoDB 版本, connect() 函数中的参数不一样。...}); var Schema = mongoose.Schema; // 注意:Schema 该变量名使用大写,表示构造函数。...callback 当操作完成以后调用的回调函数。...,查询结果会通过回调函数返回 这里回调函数必须传,如果不传回调函数,压根就不会去查询 */ ---------------------------------
1.安装nest.js脚手架 cnpm i -g @nestjs/cli 2.创建nest项目 nest new 项目名 3.安装mongoose 项目中我们会用到 Mongoose 来操作我们的数据库...,Nest 官方为我们提供了一个 Mongoose 的封装,我们需要安装 mongoose 和 @nestjs/mongoose: npm install mongoose @nestjs/mongoose...,负责处理客户端传入的请求和服务端返回的响应。...操作数据库其实是异步的,所以这里我们使用 async 函数来处理异步的过程。...到这里我们的nest.js一个调用mongoose来操作mongoDB数据库的后端程序就已经写好了。
: 5c09dea28acfb814980ff827, name: 'Javascript', author: 'wuyuxin‘ }] // 根据条件查找文档 Course.findOne...第三方模块 用来操作数据库 const mongoose = require('mongoose'); // 数据库连接 mongoose.connect('mongodb://localhost/playground...// User.find({_id: '5c09f267aeb04b22f8460968'}).then(result => console.log(result)) // findOne方法返回一条文档...默认返回当前集合中的第一条文档 // User.findOne({name: '李四'}).then(result => console.log(result)) // 查询用户集合中年龄字段大于20...字段值包含足球的文档 // User.find({hobbies: {$in: ['足球']}}).then(result => console.log(result)) // 3.选择要查询的字段 /
使用 Mongoose 简单的建立一个博客数据库以及模型之间的关联。...categories: [ // 分类与分类模型相关联 6 { 7 type: mongoose.SchemaTypes.ObjectId, // 关联分类模型中的唯一 _id...cate2 = await Category.findOne({ 6 name: "nodejs" 7 }); 8 const post1 = await Post.findOne({ 9...populate()可以跟踪关联的_id,输出详细的内容。...console.log(cates) 8})(); COPY https://github.com/Innei/Back-End-Study/blob/master/express-demo/db.js 注意 立即执行函数记得一定要分号
webpack-cli": "^3.3.0" } '具体还需要什么,可以上网去搜索下' ---- 二、入口文件,我们使用 ejs 引擎渲染( res.render() ) 1.Node.js使用ejs渲染的核心技巧是渲染数据的指定...1.路由模块的核心,一个路由处理一个逻辑 2.res.end / send / render 后面再写逻辑也不会执行了,因为已经返回响应。...3.对于cookie的使用我们需要依赖第三方中间件 4.res.render()里面是写ejs渲染的文件,所以可以不用写ejs的后缀 5.res.redirect()里面写的是定向的那个路由,指定前往那个路由...2.限制对象一旦生成那么无法改变,除非删除数据库 3.限制对象的增删改查都返回的是一个promise对象, 如果这时候去 if() 里判断,无论有什么样的结果,都是true, 而且这个 CRUD 操作都是异步...,所以我们把外部函数变成 async 函数, 这样可以配合 await 实现最佳异步,还可以获取他们的返回值进行 if 判断。
创建集合 创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。...// mongoose.Schema() 是一个构造函数,要new一个实例对象 //2、设定集合规则 const courseSchema = new mongoose.Schema({ name...: String, author: String , isPub1ished: Boolean }); //3、使用规则创建集合 这里创建的集合也是一个构造函数 const Course..._id: 5c09dea28acfb814980ff827, name: 'Javascript', author: 'xc-dh‘ }] findOne()方法 返回一条文档...// 根据条件查找文档 Course.findOne({name: 'node.js基础'}).then(result => console.log(result)) // 返回文档 只返回一条,默认返回第一条
({ name: String, author: String, isPublished: Boolean }); //使用创建集合 创建构造函数 const Course...// User.find({_id: '5c09f267aeb04b22f8460968'}).then(result => console.log(result)) // findOne方法返回一条文档...默认返回当前集合中的第一条文档 // User.findOne({name: '李四'}).then(result => console.log(result)) // 查询用户集合中年龄字段大于20...('User', userSchema); // 查找到一条文档并且删除 // 返回删除的文档 // 如何查询条件匹配了多个文档 那么将会删除第一个匹配的文档 // User.findOneAndDelete...('User', userSchema); // 找到要删除的文档并且删除 // 返回是否删除成功的对象 // 如果匹配了多条文档, 只会删除匹配成功的第一条文档 // User.updateOne({
bash 1npm i mongoose COPY 在 js 中加入 js 1const mongoose = require("mongoose"); 2mongoose.connect("mongodb...://127.0.0.1:27017/express-test", { 3 useNewUrlParser: true 4}); // 使用新的地址解析器 5 6const Names = mongoose.model...( // 定义一个新的模型 7 "Names", // 相当于 SQL 的表的名称 8 new mongoose.Schema({ // 相当于 SQL 的字段类型 9 name: String...const data = req.body; 5 res.send(await Names.create(data)) 6}) COPY 操作数据库时必须使用 async 函数,操作时使用 await...否则会出现一直等待的情况。 查询数据 定义一个路由 /names,get 请求时返回所以记录的 json 格式。
创建一个 aggregateTest.js 重点在于 $lookup 对象,代码如下所示: $lookup.from: 在同一个数据库中指定要 Join 的集合的名称。...$lookup.foreignFiled: 被 Join 的集合的字段,本示例中是 Books 表的 bookId 字段。 $as: 别名,关联查询返回的这个结果起一个新的名称。...如果需要指定哪些字段返回,哪些需要过滤,可定义 $project 对象,关联查询的字段过滤可使用 别名.关联文档中的字段 进行指定。...表示的要 Join 的集合的名称,同 $lookup.from justOne: 默认为 false 返回多条数据,如果设置为 true 就只会返回一条数据 AuthorSchema.virtual('.../model'); (async () => { const res = await AuthorModel.findOne({ authorId: 1 }) .populate({
1.MongoDB增删改查操作 1.1 创建集合 创建集合分为两步,一是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。...promise对象,说明也支持异步函数的语法 1.3 mongoDB数据库导入数据 找到mongodb数据库的安装目录,将安装目录下的bin目录放置在环境变量中。...// 根据条件查找文档 Course.findOne({name: 'node.js基础'}).then(result => console.log(result)) 返回一个对象 ?...将用户ID传递到当前页面 2.从数据库中查询当前用户信息 将用户信息展示到页面中 2.实现用户修改功能 1.指定表单的提交地址以及请求方式 2.接受客户端传递过来的修改信息..., max: 80 }, password: String, email: String, hobbies: [String] }); //创建集合返回集合构造函数
, price: 20.0 }); console.log("插入成功", r.result); // 查询全部 let fruits=await fruitsTable.findOne...., tags: ["热带", "甜"]}) // 插入带标签数据 // $all:查询指定字段包含所有指定内容的文档 await col.find({ tags: {$all:['热带','甜']...$pop删除首项-1或尾项1 fruitsColl.updateMany({ name: "芒果" }, { $pop: {tags: 1}}) fruitsColl.updateMany({ name...也需要一个odm工具来方便更好的操作。而mongoose就是i 一个良好的工具。 mongoose是一个优雅的nodejs对象文档模型。它是由关系型数据库的思想去应用到非关系型数据库。...Keystone是以Express和MongoDB和mongoose为基础搭建的开源的Node.js CMS和web应用程序平台。
1.创建集合 创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。...// mongoose.Schema() 是一个构造函数,要new一个实例对象 //2、设定集合规则 const courseSchema = new mongoose.Schema({ name...: String, author: String , isPub1ished: Boolean }); //3、使用规则创建集合 这里创建的集合也是一个构造函数 const Course...'xc-dh‘ },{ _id: 5c09dea28acfb814980ff827, name: 'Javascript', author: 'xc-dh‘ }] findOne...()方法 返回一条文档 // 根据条件查找文档 Course.findOne({name: 'node.js基础'}).then(result => console.log(result)) // 返回文档
废话不多说,这个就是为了实现 文章的上一篇和下一篇的接口 直接上代码: router.post("/bookInfo", async (ctx) => { let bookId = ctx.request.body.ID...; const book = mongoose.model("book"); // 获取上一篇和下一篇的文章 // select是指定返回的字段 let prevBook = await... book .findOne({ ID: { $lt: bookId }, visible: true }) .sort({ ID: -1 }) .select({ ID: 1,... title: 1 }) .then((res) => res); let nextBook = await book .findOne({ ID: { $gt: bookId },...}) .sort({ ID: 1 }) .select({ ID: 1, title: 1 }) .then((res) => res); await book .findOne
了解第一个Controller: Controller意为控制器,我们主要的后端逻辑处理的地方(当然过多的通用逻辑应该抽取到Service层),我们通过this指针结构到ctx上下文对象,并将要返回的内容赋值给...Token模型定义: module.exports = app => { const mongoose = app.mongoose; const Schema = mongoose.Schema..., { timestamps: true }); return mongoose.model('Token', TokenSchema); }; 复制代码 还准备了一个公共的BaseController...,将统一处理接口的返回格式: 'use strict'; const Controller = require('egg').Controller; class BaseController extends...const { username, password } = ctx.request.body; const ret = await ctx.model.User.findOne({ username
这里的mongoose就是npm的一个包,主要是为程序提供连接mongodb并增删查改的功能。...通过使用shortid可以生成一个指定字符不重复的编码,便于我们生成类似xxx.com/ngTsfdgh 类似红字部分的编码。...(err) console.log(err); res.send("http://localhost:3000/" + shortid); }); return; }); 指定生成...最后,连接数据库并保存后将短链接结果返回客户端: mongoose.connect(setup.mongo_db, setup.mongo_options); UrlTable.create(objurl...(setup.mongo_db, setup.mongo_options); UrlTable.findOne({ shortUrl:shortUrl }).then((result) => {
mongoose简介 mongoose官网:https://mongoosejs.com/ #为什么要用Mongoose Mongoose就是一个让我们可以通过Node来操作MongoDB的一个模块。...Node原生的MongoDB驱动更容易 #使用Mongoose 下载安装mongoose模块 cnpm install mongoose --save 引用mongoose: var mongoose...有点像构造函数的样子 let personSchema= new Schema({ name: String, sex: String, age: Number }); 基本属性类型有...已经存在,则会保存到其目录下,如果未存在,则会创建person集合,然后在保存数据。...err){ console.log(data) }else{ throw err; } }) MongoDB的find()、findOne() 等命令在
领取专属 10元无门槛券
手把手带您无忧上云