首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React、TypeScript、NodeJS 和 MongoDB 搭建 Todo App

yarn add express cors mongoose 我们还需要安装它们类型作为开发依赖项,帮助 TypeScript 编译器理解这些包。...yarn add -D @types/node @types/express @types/mongoose @types/cors 现在,TypeScript 不会再对你提示错误——它将使用这些类型来定义我们刚刚安装库...就是说,现在如果我们能成功连接 MongoDB,服务器就会启动,否则,会抛出错误。 我们现在已经通过 Node、Express、TypeScript 和 MongoDB 完成 api 构建。...getTodos() 方法会返回 promise —— 因此,我们可以调用 then 函数并用获取到数据更新 state,或者在发生任何错误抛出一个错误。...如果 Todo 被成功保存,我们将更新数据,否则将会抛出错误

17K30

Node.js 搭建一个 API 接口服务(实战)

Typescript 网上特别多关于“为什么要用Typescript开发”,“Typescript开发好处和坏处”,“为什么不用Typescript开发”等等争论和文章,有兴趣同学也可以去说道说道哈...false, }, options)); } // 定义表结构 import { Model, ModelAttributes, DataTypes } from 'sequelize' // 定义用户表模型字段属性...不过这个项目除了使用mysql,也还有用到mongo,接下来看看mongodb怎么用 使用mongoose作为mongodb中间件 // mongoose入口 import mongoose from...mongoose.model('AccLog', AccSchema) 实现接口 好了,上面我们已经定义好表模型了,接下来就是激动人心接口实现了。...这边就先贴log4相关代码了 部署 使用pm2来部署项目,这边展示一下配置文件 Tips error_file 错误日志输出 out_file 正常日志输出 script 入口文件 - 以打包过后

8.1K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Mongoose学习参考文档

    一、快速通道 1.1 名词解释 Schema : 一种以文件形式存储数据库模型骨架,不具备数据库操作能力 Model : 由Schema发布生成模型,具有抽象属性和行为数据库操作对...Schema——纯洁数据库原型 1.1 什么是Schema 我理解Schema仅仅只是一断代码,他书写完成后程序依然无法使用,更无法通往数据库端 他仅仅只是数据库模型在程序片段中一种表现,或者是数据属性模型..._id, 索引会作为一个专题来讲解 2.4 虚拟属性 Schema中如果定义了虚拟属性,那么该属性将不写入数据库,例如: var PersonSchema = new Schema({...doc,true); //启用严格 var thing2 = new ThingModel(doc,false); //禁用严格 注意: strict也可以设置为throw,表示出现问题将会抛出错误...err.errors.color //错误属性(Schemacolor属性) err.errors.color.message //错误属性信息 err.errors.path

    24.2K90

    快速构建Express服务

    使用Mongoose构建服务 该方式需要在本地安装MongoDB才可以 使用 TypeScript、Express、Mongoose 和 pnpm 可以快速构建后端服务,并实现增删改查以及列表查询功能...创建项目文件夹,并进入该文件夹: mkdir backend cd backend 初始化 npm 项目,并选择 TypeScript 作为开发语言: pnpm init 安装依赖: pnpm install...models.ts:Mongoose 模型定义文件。 routes.ts:Express 路由定义文件。 在 models.ts 文件中定义 Mongoose 模型。...例如,我们创建一个 User 模型: import mongoose from 'mongoose'; const userSchema = new mongoose.Schema({ name:...删除用户:DELETE http://localhost:3000/users/{id} 请注意,这只是一个简单示例,实际项目中可能需要更多验证、错误处理和安全性措施。

    14910

    ✅快速构建Express服务

    使用Mongoose构建服务该方式需要在本地安装MongoDB才可以使用 TypeScript、Express、Mongoose 和 pnpm 可以快速构建后端服务,并实现增删改查以及列表查询功能。...创建项目文件夹,并进入该文件夹:mkdir backendcd backend初始化 npm 项目,并选择 TypeScript 作为开发语言:pnpm init安装依赖:pnpm install express...models.ts:Mongoose 模型定义文件。routes.ts:Express 路由定义文件。在 models.ts 文件中定义 Mongoose 模型。...例如,我们创建一个 User 模型:import mongoose from 'mongoose';const userSchema = new mongoose.Schema({ name: {...删除用户:DELETE http://localhost:3000/users/{id}请注意,这只是一个简单示例,实际项目中可能需要更多验证、错误处理和安全性措施。

    18221

    Koa2+MongoDB+JWT实战--Restful API最佳实践

    page=2&per_page=100:指定第几页,以及每页记录数。 ?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。 ?...这意味着对请求认证不应该基于cookie或者session。相反,每个请求应该带有一些认证凭证。 限流 为了避免请求泛滥,给 API 设置速度限制很重要。...这两者组合没什么问题,不过 koa-multer 和 koa-route(注意不是 koa-router) 存在兼容问题。...rest : { stack, ...rest } }) ); 错误会默认抛出堆栈信息stack,在生产环境中,没必要返回给用户,在开发环境显示即可。...简单说,Mongoose就是对node环境中MongoDB数据库操作封装,一个对象模型(ODM)工具,将数据库中数据转换为JavaScript对象以供我们在应用中使用。

    9.2K42

    TypeScript 官方手册翻译计划【一】:基础

    这就是上面的代码会抛出 TypeError 原因 —— 它表明字符串 "Hello World!" 无法作为函数被调用。...那么不妨我们改用一种方案,使用一个静态类型系统,在代码实际执行前预测代码行为。 静态类型检查 还记得之前我们将字符串作为函数调用时,抛出 TypeError 错误吗?...大多数开发者在执行代码时希望看到任何错误 —— 毕竟这些都是 bug!当我们编写新代码时候,我们也会尽量避免引入新 bug。...复制代码 还是之前代码,但这次使用TypeScript,它会在编译时候就抛出错误。...也许你会觉得这是“理所当然”,并且你会觉得,访问对象上不存在属性时,也会抛出一个错误。但恰恰相反,JavaScript 表现和我们预想不同,它返回是 undefined。

    90610

    Node.js 配合 express 框架、mongodb 实践 &&

    一、Node.js默认使用commonJs模块化方案,TypeScript默认是ES6模块化方案,两者有本质区别。.../(使用相对路径),暴露接口使用exports或者module.exports 2.TypeScript import * from url 引入依赖,需要填写完整相对路径,否则是找不到模块...,暴露接口使用export . 3.Node中使用TypeScript需要下一些包去支持,比如express框架这些,还有一些支持内置对象包: 4.github源码下载地址 "dependencies...2.尽量一个渲染数据对象包括所有的渲染内容 3.一个渲染对象可以有很多个属性,每次get请求时先发送一个空对象到后端,再根据需求逻辑指定 对象属性和内容,最后还是传输那个对象回来。...(核心) 1.CRUD操作全部依赖模型对象来执行。

    5K20

    你不知道 JSON.stringify

    undefined、任意函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象属性值中时)或者被转换成 null(出现在数组中时)。...对包含循环引用对象(对象之间相互引用,形成无限循环)执行此方法,会抛出错误 我认为 JSON.stringify 能够返回字符串以外东西是挺惊讶。...JSON.stringify 也可能遇到问题,导致它抛出一个错误。在正常情况下,有四种情况会发生: 循环引用会导致抛出一个类型错误。...const b = { a }; a.b = b; JSON.stringify(a); // => TypeError: cyclic object value 注意,这些错误消息在不同浏览器可能提示是...总结 JSON.stringify 有时会返回 undefined,而不是一个字符串 JSON.stringify 有时会抛出一个错误 我们可以通过用不同方式包装函数来解决这个问题 希望这篇文章能让你对

    3.3K20

    TypeScript 4.1 发布,新增模板字面量类型

    模板字面量类型在社区中得到了非常热烈响应。这个新特性提供了使用普通字符串字面量类型作为其他类型定义能力,这让创建和执行模板语法变得很容易。...映射类型以前仅限于带有已知建新对象类型,现在支持创建新键或过滤已有的键。...TypeScript 团队警告说,这个模式应该谨慎使用,避免递归类型检查速度变慢,而且如果超出了受支持递归深度,TypeScript 编译器将会抛出编译时错误。...TypeScript 4.1 添加了一个新编译器标志 --noUncheckedIndexedAccess,用来识别潜在未定义属性。...resolve 参数现在在 promise 中是必需TypeScript 4.1 包含了一个快速修复,以简化升级过程。 条件扩展可创建可选属性匹配参数不再相关。

    2.5K20

    TypeScript 演化史 — 第九章】object 类型 和 字符串索引签名类型属性

    Object.setPrototypeOf() 或 Object.create() 会导致在运行时抛出类型错误。...当咱们试图访问此类对象上任意属性时,TypeScript 会提示编译时错误 // Type {} const obj = {}; // Error: 类型“{}”上不存在属性“prop” obj.prop...Object]" obj.toString(); 字符串索引签名类型属性TypeScript 2.2 之前,如果想访问带有字符串索引签名类型任意属性,就必须使用[]符号,但不允许使用.符号访问...没有为这段代码提供一个错误,那么就没有对拼写错误属性保护。...在 JS 中访问属性时,大多数时候将使用点表示法,但也可以使用括号表示法作为转义。 有了这个较松限制,对于常用JS 开发的人员来说更容易使用。

    1.4K30

    TypeScript 演化史 — 第三章】标记联合类型 与 never 类型

    编写一个事例,其中包括一个模型,两个 actions 和一个 Todo 应用程序 reducer。 以下是一个简化 Todo 类型,它表示单个 todo。...代码其余部分是纯 ES2015,而不是特定于 TypeScript。 我们遵循与前面示例相同逻辑。基于 Redux 操作 type 属性,我们在不修改现有状态情况下计算新状态。...一旦控制流分析排除了 string 和 number 作为 value 类型候选项,类型检查器就推断出never 类型,这是惟一剩下可能性。...这样函数在 TypeScript 中被推断为有一个 void 返回类型。 具有 never 返回类型函数永不返回。它也返回 undefined。...该函数没有正常完成,这意味着它会抛出一个错误,或者根本不会完成运行。 函数声明类型推断 关于函数声明返回类型推断有一个小问题。

    1K20

    类型声明,分类与使用

    ;// 尝试使用普通字符串作为键来访问该属性会失败console.log(obj['mySymbol']); // undefined,因为属性键是 symbol 类型,不是字符串// 使用正确 symbol...具体来说,它表示是那些永远不会有返回值函数(如抛出错误函数或无限循环函数)返回类型。...'XiaoMu'};// 下面这行代码将会引发错误,因为 id 是只读,不能被修改// person.id = 2;索引签名如果不确定对象会有哪些属性,如果知道它们类型,可以使用索引签名。...如果写类型为undefined,则不能不返回reAturn,如果为void,既可以返回return也可以写9、函数重载与可调用注解模拟函数重载在 TypeScript 中,你可以使用联合类型来模拟函数重载...这通常是通过定义一个接口,并在该接口中声明一个带有特定签名调用签名(call signature)来实现

    6700

    【TS 演化史 -- 15】可选 catch 语句变量 和 JSX 片段语法

    即使咱们稍微拼错了一个变量、属性或函数名,TypeScript 在很多情况下都可以提示正确拼写。...// ... } 可选catch绑定用例 通常,咱们希望忽略应用程序中错误。...然而,在一些罕见情况下,可能根本不需要 catch 变量绑定。 假设咱们试图将一个错误记录到控制台,然后由于某种原因,日志代码本身会导致另一个错误。...咱希望日志代码抛出错误,所以在这种情况下,没有绑定catch子句可能是有意义 function log(error) { try { console.error(error); }...编译 JSX 片段 下面带有JSX语法ListItems组件 class ListItems extends React.Component { render() { return

    1.2K10

    TypeScript 演化史 -- 9】object 类型 和 字符串索引签名类型属性

    Object.setPrototypeOf() 或 Object.create() 会导致在运行时抛出类型错误。...当咱们试图访问此类对象上任意属性时,TypeScript 会提示编译时错误 // Type {} const obj = {}; // Error: 类型“{}”上不存在属性“prop” obj.prop...Object]" obj.toString(); 字符串索引签名类型属性TypeScript 2.2 之前,如果想访问带有字符串索引签名类型任意属性,就必须使用[]符号,但不允许使用.符号访问...没有为这段代码提供一个错误,那么就没有对拼写错误属性保护。...在 JS 中访问属性时,大多数时候将使用点表示法,但也可以使用括号表示法作为转义。 有了这个较松限制,对于常用JS 开发的人员来说更容易使用。

    1.3K10

    TypeScript 常用知识总结

    例如,TypeScript 使用类型和接口等概念来描述正在使用数据,这使开发人员能够快速检测错误并调试应用程序 TypeScript 从核心语言方面和类概念模塑方面对 JavaScript 对象模型进行扩展...TypeScript 通过类型注解提供编译时静态类型检查。 TypeScript数据要求带有明确类型,JavaScript不要求。 TypeScript 为函数提供了缺省参数值。...TypeScript 引入了命名空间 TypeScript 优势 静态输入: 静态类型化是一种功能,可以在开发人员编写脚本时检测错误。查找并修复错误是当今开发团队迫切需求。...类描述了所创建对象共同属性和方法。 TypeScript 支持面向对象所有特性,比如 类、接口等。...private : 私有,只能被其定义所在类访问。 类可以实现接口,使用关键字 implements,并将 interest 字段作为属性使用。

    1.8K30

    4000字讲清 《深入理解TypeScript》一书 【基础篇】

    让我们用最初代码做为示例,如果你没有按约定添加属性TypeScript 编译器并不会对此发出错误警告: interface Foo { bar: number; bas: string; }...WARNING 请注意,这种错误提示,只会发生在对象字面量上 允许分配而外属性: 一个类型能够包含索引签名,以明确表明可以使用额外属性: let x: { foo: number, [x: string...如果在你参数里,不止拥有一个泛型,你应该使用一个更语义化名称,如 TKey 和 TValue (通常情况下,以 T 作为泛型前缀,在其他语言如 C++ 里,也被称为模板) 变体 对类型兼容性来说,变体是一个利于理解和重要概念...它自然被分配一些例子: 一个从来不会有返回值函数(如:如果函数内含有 while(true) {}); 一个总是会抛出错误函数(如:function foo() { throw new Error...,它将会抛出一个错误

    1.9K30

    TypeScript手记(三)

    可选属性好处之一是可以对可能存在属性进行预定义,好处之二是可以捕获引用了不存在属性错误。...你可能会争辩这个程序已经正确地类型化了,因为 width 属性兼容,不存在 color 属性,而且额外 colour 属性是无意义。...然而,TypeScript 会认为这段代码可能存在 bug。对象字面量会被特殊对待而且会经过额外属性检查,当将它们赋值给变量或作为参数传递时候。...如果一个对象字面量存在任何“目标类型”包含属性时,你会得到一个错误。...如果 SquareConfig 带有上面定义类型 color 和 width 属性,并且还会带有任意数量其它属性,那么我们可以这样定义它: interface SquareConfig { color

    89720
    领券