,Nest 官方为我们提供了一个 Mongoose 的封装,我们需要安装 mongoose 和 @nestjs/mongoose: npm install mongoose @nestjs/mongoose...,负责处理客户端传入的请求和服务端返回的响应。...User's Info"; // [All User's Info] 暂时代替所有用户的信息 } } 这就是 controller 的作用,负责分发和处理请求和响应。...user_name:this.data.inputValue1_find, }, success: function(res) { // 请求成功,处理从服务器返回的数据...请求失败,处理错误 console.error('请求失败:', error); // 在界面上显示错误信息,告知用户请求失败 } }); }, find_all
default: 任意类型或函数,为路径设置一个默认的值。如果值是一个函数,则函数的返回值用作默认值。...(uri, options); 回调 connect()函数也接收一个回调参数,其返回一个 promise。...nin与查询数组中指定的值中的任何一个都不匹配Model.find({ age: { in: [18, 24]} })返回 age 字段等于 18 或者 24 的所有 document。...all匹配包含查询数组中指定的所有条件的数组字段elemMatch匹配数组字段中的某个值满足 elemMatch 中指定的所有条件size匹配数组字段的 length 与指定的大小一样的 document...// 使用 all 查找同时存在 18 和 20 的 documentModel.find({ age: { 使用操作符 精确查找 查找全部 projection 指定要包含或排除哪些 document
({name:'text'}) // 验证文本搜索需首先对字段加索引 await col.find({$text:{$search:'芒果'}}) // 按词搜索,单独字查询不出结果 // 数组$all...col.find({ tags: {$all:['热带','甜'] } } // $elemMatch: 指定字段数组中至少有一个元素满足所有查询规则 col.insertOne({hisPrice...也需要一个odm工具来方便更好的操作。而mongoose就是i 一个良好的工具。 mongoose是一个优雅的nodejs对象文档模型。它是由关系型数据库的思想去应用到非关系型数据库。...("fruit", Schema); try { // 4.创建,create返回Promise let r = await Model.create({...返回Query,它实现了then和catch,可以当Promise使用 // 如果需要返回Promise,调用其exec() r = await Model.find({
的模块用的是mongoose。...错误方法:find() 也许,在遍历 MongoDB 集合时,我们会这样写: const Promise = require("bluebird"); function findAllMembers(...打印find()返回的 members 数组可知,集合中所有元素都返回了,哪个数组放得下 1000 万个 Object?...正确方法:find().cursor()与 eachAsync() 将整个集合 find()全部返回,这种操作应该避免,正确的方法应该是这样的: function findAllMembersCursor...参考 如何使用 mongoose 对一个 100 万+的 mongodb 的表进行遍历操作 Cursors in Mongoose 4.5 关于Fundebug Fundebug专注于JavaScript
如果值为真,为此属性添加require验证器 default: 任何值或函数 设置此路径默认值,如果是函数m,函数返回值为默认值 select: 布尔值 指定query的默认projections validate...回调 connect()函数接受回调函数,或返回一个Promise keepAlive 对于长期运行的后台应用,启用毫秒级 keepAlive 是一个精明的操作。...Query实例有一个.then()函数,用法类似Promise 我们看一下demo,查询persons表中name中属性last为Ghost值的文档,只查询 name和occupation两个字段 const...stuff next() }) 在 mongoose5.x 中,除了手动调用 next 函数,还可以返回一个 Promise,甚至是 async/await。...返回的一切对象: const mongoose = require('mongoose') const Schema = mongoose.Schema; const personSchema =
创建集合 创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。... isPublished: false }, (err, result) => { console.log(err); console.log(result); }); // 可以使用promise...4.查询文档 find()方法 返回一组文档 // 根据条件查找文档(条件为空则查找所有文档) Course.find().then(result => console.log(result)) //...没有插入信息时默认显示的值 default: Date.now }, category: { type: String, // 枚举,列出当前字段可拥有的值...type: String, // 自定义验证器 validate: { validator: v => { // 返回布尔值
1.创建集合 创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。...在项目根目录下输入以下命令导入 mongoimport -d 数据库名称 -c 集合名称 --file 要导入的数据文件 4.查询文档 find()方法 返回一组文档 // 根据条件查找文档(条件为空则查找所有文档...) Course.find().then(result => console.log(result)) // 返回文档集合(数组形式) [{ _id: 5c0917ed37ec9b03c07cf95f...没有插入信息时默认显示的值 default: Date.now }, category: { type: String, // 枚举,列出当前字段可拥有的值...type: String, // 自定义验证器 validate: { validator: v => { // 返回布尔值
mongodb提供的API也支持promise对象 ? ?...promise对象,说明也支持异步函数的语法 1.3 mongoDB数据库导入数据 找到mongodb数据库的安装目录,将安装目录下的bin目录放置在环境变量中。...返回一个对象 ?...不想要的值在字段后面添加 - 再加属性 比如去掉默认的_id User.find().select('name email -_id').then(result => console.log(result...anthor: { type: String, validate: { validator: v => { //返回布尔值
异步生成器函数与异步函数和生成器函数的不同之处在于,它们不返回 promise 或迭代器,而是返回一个异步迭代器。...你可以将异步迭代器视为 iterator,其 next() 函数始终会返回 promise。...你的第一个异步生成器函数 异步生成器函数的行为类似于生成器函数:生成器函数返回一个具有 next() 函数的对象,调用 next() 将执行生成器函数直到下一个 yield。...不同之处在于异步迭代器的 next() 函数返回了一个 promise。 下面是带有异步生成器功能的 “Hello, World” 例子。...假设你要循环浏览 Mongoose cursor 【https://thecodebarbarian.com/cursors-in-mongoose-45】中的所有文档,并通过 websocket 或命令行报告进度
接下来,我们使用 getTodos() 函数来获取数据,它接收 req 和 res 参数并返回 promise。...在前面创建的 Todo 模块的帮助下,我们现在可以从 MongoDB 获取数据并返回 Todo 数组。...: ITodo } 这里, ITodo 接口需要跟 API 返回的数据类型一样。这里没有 mongoose , 所以需要加一些额外的属性来匹配 API 定义的数据类型。...它将返回 AxiosResponse 为类型的 promise, 保存获取到的 ApiDataType 类型的 Todos。...getTodos() 方法会返回 promise —— 因此,我们可以调用 then 函数并用获取到的数据更新 state,或者在发生任何错误时抛出一个错误。
add typescript -g 安装 express 和 MongoDB 依赖和他们的 @types yarn add express cors mongoose yarn add -D @types.../node @types/express @types/mongoose @types/cors 安装用来编译 Typescript 的concurrently 和 nodemon yarn add...mongoose 的 Document,也就是基础的文本格式。...todos: ITodo[] = await Todo.find() res.status(200).json({ todos }) } catch (error) { throw...app.ts import express, { Express } from 'express'; import mongoose from 'mongoose'; import cors from
在 movie 的旁边,name: "Manchester",这个代表着传入 movie 的参数,参数名为 name 值为Manchester,利用这些参数向服务器表达你所需的数据需要符合什么条件。...后者表示movies中返回的 Movie 元素不能为空,但 movies字段的返回是可以为空的。 你可能在请求体中注意到,genre 参数的值没有被双引号括起来,也不是任何内置类型。...别名即为返回字段使用另一个名字,使用方法也很简单,只需要在请求体的字段前面使用别名:的形式即可,返回的数据将会自动替换为该名称。 ?....exec(); } }, Actor: { movies(prev, args, context) { return Promise.all...()) ); } }, Movie: { actors(prev, args, context) { return Promise.all
[0]; // 获取zhanghao字段的值 const juese = firstData.juese; console.log...// 获取zhanghao字段的值 router.pushUrl({ url: 'pages/App_one',...axios({ method: "get", url: 'http://localhost:3000/qiandaos/find_all...} }); // 全部查询 router.get("/find_all", async (req, res) => { // Corrected function signature try {...const results = await qiandao.find(); if (results.length > 0) { // 如果找到匹配的记录,则返回所有匹配的记录
// User.find({_id: '5c09f267aeb04b22f8460968'}).then(result => console.log(result)) // findOne方法返回一条文档...字段值包含足球的文档 // User.find({hobbies: {$in: ['足球']}}).then(result => console.log(result)) // 选择要查询的字段 //...('User', userSchema); // 找到要删除的文档并且删除 // 返回是否删除成功的对象 // 如果匹配了多条文档, 只会删除匹配成功的第一条文档 // User.updateOne({...: { validator: v => { // 返回布尔值 // true 验证成功 // false 验证失败 // v 要验证的值 return v && v.length > 4 }..., // 自定义错误信息 message: '传入的值不符合验证规则' } } }); const Post = mongoose.model('Post', postSchema);
的模块来操作来提升开发效率 下面我们一步步来了解mongoose的基本操作^_^!...model是由schema生成的模型,可以对数据库的操作 我们对上面的定义的user的schema生成一个User的model并导出,修改后代码如下 /** * 用户信息 */ var mongoose...} else { console.log("Res:" + res); } }) } del(); 结果就不贴了,res中会返回是否成功以及影响的行数... $nin 不在多个值范围内 $all 匹配数组中多个值 $regex 正则,用于模糊查询 $size 匹配数组大小 $maxDistance...其它操作 其它还有比较多常用的 索引和默认值 再看看我对user.js这个schema的修改 /** * 用户信息 */ var mongoose = require('.
3、查找文档 // 根据条件查找文档(条件为空则查找所有文档) Course.find().then(result => console.log(result)) // 返回文档集合 [{...)) // 引入mongoose第三方模块 用来操作数据库 const mongoose = require('mongoose'); // 数据库连接 mongoose.connect('mongodb...// 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.选择要查询的字段 /
字段值可以包含其他文档,数组及文档数组,操作起来比较简单和容易。...image.png 1.3 数据库的基本操作 显示表 show dbs; 切换数据库 use test; 插入数据 db.test.insert({name:"vivo"}); 查询数据 db.test.find...2. mongoose 2.1 安装 npm i mongoose -S 2.2 使用 在 node.js 里采用的是CommonJS[4]的规范,需要我们采用 require 的方法来引入需要的包。...:'user'}) 在 mongoose 中,提供了 Schema 的类,我们可以在实例化的时候先定义mongoose.Schema,以免后续总是要出现丑陋的new mongoose.Schema()。...第二种写法是返回promise 上述定义 model 的方法是通过 model 类创建的,还有一种创建 model 的方法是通过实例创建,这个创建出来的是一个操作对象,代表是一个单个文档只能操作自己。
以下所有操作都是使用的 mongoose ,另外 schema 和 model 定义这些无关紧要的部分统统省略了,无需深究代码的细节处。...从 doc 数组中遍历每一个元素的 phone 属性,去另外一张表中查询 phone 匹配的数据,合并对象,然后返回结果。...你肯定想问,上面两个阶段我为什么还在用回掉函数这么老掉渣的写法而不是 promise 呢,因为在 promise 里是不会有类似于 for 、map 这种循环遍历的,涉及到这种操作,应该用 promise.all...结语 ---- 第二阶段的同步阻塞是很容易忽略和想当然的地方,第三阶段当我们要在 promise 中使用类似于 for 、map 这种循环时,其实应用使用的是 promise.all,另外如果你写出了...promise 嵌套 promise 的情况,我觉得你应该重新思考下 promise ,就这样吧,记录一个很小的问题,至于 async/await 暂时还不想写在这里。
"mongoose": "^5.6.11", // 更优雅的操作mongodb "request": "^2.88.0",..."request-promise": "^4.2.2", // 发起请求 "xml2js": "^0.4.23" //.../ssl/api.domain.com.crt") } 将应用层中间件绑定到应用程序对象的实例 app.use(sslify()); 启动一个端口为3000 的 https 的服务 https.createServer.../db/connection'); const request = require('request-promise'); const User = require('.....createAt: '', updateAt: '' }); const doc = await User.find
; // 返回的是一个文档对象的数组 db.users.find({age:25})[1]; db.users.find({age:25})[5]; db.users.findOne({age...({age:25}).count(); // 查询一个符合条件的文档对象的属性值(该方法常用) db.users.findOne({age:25}).length(); // 查询一个符合条件的文档对象的属性值...", "shenzhen"], movies: ["sanguo", "hero"]} // MongoDB 的文档的属性值也可以是一个文档,当一个文档的属性值是一个文档时,我们称这个文档叫做内嵌文档。...查询的方法: Model.find(conditions, [projection], [options], [callback]) - 查询所有符合条件的文档,总会返回一个数组...err) { // console.log(doc); // 通过 find() 查询的结果,返回的对象就是 Document 对象或 Document 对象数组。
领取专属 10元无门槛券
手把手带您无忧上云