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

为什么在调用api时必须返回函数,而在express (KeystoneJs)中调用视图控制器时却不返回?

在调用API时必须返回函数,而在Express(KeystoneJS)中调用视图控制器时却不返回的原因是由于它们所处的上下文和设计模式的不同。

首先,API是一种用于不同系统之间进行通信和数据交互的接口。当调用API时,我们需要返回一个函数,这是因为API通常会涉及异步操作和回调函数的使用。返回函数可以确保在异步操作完成后,通过回调函数将结果返回给调用方。

在云计算领域中,API通常用于请求云服务提供商的资源、执行计算任务等。由于这些操作可能涉及到网络通信、数据处理、安全验证等耗时的过程,因此需要使用回调函数来处理异步结果。返回函数的设计可以使得调用方能够方便地处理异步操作的结果,提高系统的响应性能和并发处理能力。

而在Express(KeystoneJS)中调用视图控制器时不返回函数的原因是,Express是一种基于Node.js的Web开发框架,它采用了MVC(模型-视图-控制器)的设计模式。在这种模式下,视图控制器负责处理HTTP请求和响应,将请求的数据传递给模型进行处理,并将处理结果渲染到视图上。

在Express中,请求经过路由的匹配后,会被发送到相应的视图控制器处理函数。这些处理函数通常不需要返回函数,因为它们会直接根据业务逻辑处理请求,生成相应的响应数据,并将其渲染到视图上。在这种情况下,不需要返回函数,而是直接返回处理结果即可。

需要注意的是,虽然在Express中不需要返回函数,但是在某些情况下仍然可能会使用到异步操作和回调函数。比如在处理数据库查询、调用第三方API等耗时操作时,可以使用Promise、async/await等方式来处理异步结果。

总结起来,API调用需要返回函数是为了处理异步操作和回调函数,而在Express中调用视图控制器时不返回函数是因为其设计模式和处理方式的差异。

相关搜索:函数调用中的malloc似乎在返回时被释放?在Python中从dll调用函数时返回类型错误从视图返回的模型在调用控制器时没有在视图中设置的值为什么在警报中调用input.value时返回undefined在Node js,Express中调用class时返回值未定义MVC:在Ajax调用中从控制器返回时,结果未定义在heroku上托管时,具有Express后端的React应用程序会返回404个API调用Swift -如何从模型中的API调用返回json对象以在视图控制器中使用为什么函数getSafestCountriesNames()在我调用它时会返回promise{pending},而当我使用async/await时它会返回undefined?当我在Mocha框架中调用helper函数时,它在我的test.js中调用时返回UndefinedYouTube Data API search中的“items”元素在调用“/videos”时不返回任何内容。在.NET核心中返回具有多个InvokeAsync调用的视图组件时,控制器操作是否应为异步当我在for中调用javascript函数时,当循环for结束时,将返回此函数的所有第i个响应Cypress :在页面对象模型中从对象类调用函数时返回未定义的函数在.Net中,为什么在调用Type.GetCustomAttributes(true)时返回的接口上没有声明属性?调用工作项api时,Autodesk.DesignAutomation在JSON中的位置0返回意外的标记S在部分视图中传递到表单的模型在表单post到控制器时返回组件(在调用form之前不为空)为空只有在Firebase Cloud function : Typescript中Promise返回true时,才能进一步执行调用函数在db2中,当我们从ibm_db.callproc调用过程SP_MEM_DAILY_TMS时,当我们赋值'0‘时,为什么python脚本总是返回'none’在我的Google Search API调用中,它返回了一个有效的JSON,但是每当我解析它以获得一个特定值时,我就会得到一个未定义的值
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Node.js中的关注点分离

当你想要修改模型时,最好可以直接通过浏览模型文件夹来修改,而不是在包含模型、控制器、加载器和服务的单个文件中找来找去。...当用户注册时,他们的信息被保存在 MongoDB 数据库中。当用户登录时,我们将验证他们的信息,如果验证成功,就返回一个令牌。...它包含的函数可以被其他服务使用,因为与其在服务中构建这些函数,不如直接根据需要导入它们,保持代码整洁并加快开发速度。...例如,当你试图构建一个 try-catch 事件时可以在 catch 部分调用它,并提供必要的参数(如状态、数据和消息)。你可以重用这些定义,而不是在所有地方声明它们。...路由接收一个请求,将其转发到控制器,然后控制器将其转发到数据库,并向控制器返回一个报告。

5.9K40

手写Koa.js源码

与之相比,本文要讲的Koa就简洁多了,Koa虽然是Express的原班人马写的,但是设计思路却不一样。...所以到这里我们其实已经可以看出Koa和Express的一个重大区别了,那就是:Express使用老的API,兼容性更强,可以在老的Node.js版本上运行;Koa因为使用了新API,只能在v7.6.0或者更高版本上运行了...this,这个有点意思,为什么要返回this呢?...,这个函数必须符合http.createServer的参数形式,也就是 http.createServer(function(req, res){}) 复制代码 所以this.callback()的返回值必须是一个函数...另外由于中间件在返回前还包裹了一层Promise.resolve,所以我们所有自己写的中间件,无论你是否用了Promise,next调用后返回的都是一个Promise,所以你可以使用await next

1.2K20
  • 快速构建和交付网站:无头 CMS 推荐

    Payload 提供了许多核心优势: 不需要依赖第三方 SaaS API,而是可以直接调用自己的 API。 可以使用自己的数据库并拥有数据所有权。...Payload 仅基于 Express 构建,在 Payload 之外你可以按照需求随意定制扩展。 如果您懂 JavaScript,那么学习如何使用 Payload 将会非常容易。...强大生态系统:借助 Keystone 的底层组件库和指南资源,在构建时享受到完善支持并减少常见问题困扰。...Headless CMS:带有 GraphQL API 的 Headless CMS,在 UI 中构建 API 和内容模型。支持内容修订、本地化和细粒度权限控制。...无论是个人还是团队,在处理复杂而庞大量级的内容时,Sanity Studio 都将帮助您高效完成任务。

    55320

    SpringMVC的数据响应:编织美妙的返回乐章

    起舞的ModelAndView在SpringMVC中,ModelAndView是一个神奇的对象,它承载着控制器方法的返回值,将模型数据和视图信息一同传递给前端。...当用户访问/api/getSong时,将得到一个JSON格式的响应:{ "songName": "Spring Serenade"}响应状态码:音符的情感色彩有时候,我们不仅需要返回数据,还需要传达一些特定的情感或状态信息...异常处理:和弦的优雅回响在音乐的世界里,有时会出现一些不可避免的小插曲,而在编写Web应用程序时,处理异常也是不可或缺的一环。...而在同一个控制器中,通过@ExceptionHandler注解的handleConcertFailedException方法,对特定的异常进行处理。...当该控制器方法被访问时,只有来自该域名的请求将被允许。

    33340

    NestJS学习总结篇

    Nest 在这些常见的 Node.js 框架 (Express/Fastify) 之上提高了一个抽象级别,但仍然向开发者直接暴露了底层框架的 API。...Nest控制器 Nest中的控制器层负责处理传入的请求, 并返回对客户端的响应。 [图片上传失败...(image-5b262f-1653558123233)] 控制器的目的是接收应用的特定请求。...但是,当它返回一个字符串时,Nest 将只发送一个字符串而不是序列化它 Nest服务 Nestjs中的服务可以是service 也可以是provider。...@module() 装饰器接受一个描述模块属性的对象: providers 由 Nest 注入器实例化的提供者,并且可以至少在整个模块中共享 controllers 必须创建的一组控制器 imports...,如果不传递参数,必须返回一个空对象 } } Cookie的使用 cookie和session的使用依赖于当前使用的平台,如:express和fastify 两种的使用方式不同,这里主要记录基于express

    2.3K42

    vue面试题+答案,2021前端面试

    通常模型对象负责在数据库中存取数据 View(视图):是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的 Controller(控制器):是应用程序中处理用户交互的部分。...通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据 MVC 的思想:一句话描述就是 Controller 负责将 Model 的数据用 View 显示出来,换句话说就是在 Controller...为什么vue组件中data必须是一个函数?...对象为引用类型,当复用组件时,由于数据对象都指向同一个data对象,当在一个组件中修改data时,其他重用的组件中的data会同时被修改;而使用返回对象的函数,由于每次返回的都是一个新对象(Object...Mutation:是唯一更改 store 中状态的方法,且必须是同步函数。 Action:用于提交 mutation,而不是直接变更状态,可以包含任意异步操作。

    1.4K00

    处理 JavaScript 中的非预期数据

    但是,也存在其它有缺陷数据的来源,比如数据库、函数返回值中的隐形空数据、外部 API 等。 我们稍后将展开讨论以如何不同的方式对待每一种的情况,要知道毕竟没什么灵丹妙药。...422 一样,对于分页查询,重要的是返回恰当的状态码,无论何时对于一个只在返回值中包含了部分数据的请求,都应该返回 HTTP 206 Partial Content,也就是 “不完整的内容”;当用户到达最后一页且再没有更多数据时...抛出 Errors 对于数据库和外部 API 中的服务器代码使用 断言函数(Assertion Functions) 也是个好的实践,基本上这些函数的做法就是如果数据存在就返回否则报错。...该做法之所以好,是因为我们可以用这样一个函数找到的 user,可以被另外的函数用来检索位于其它数据库中的相关数据,比如用户的详细资料;而当我们调用后一个检索函数时,前置函数 findUser 已经 保证...用 Promise 包装隐性的空值、统一操作模式 用前置的 map 或 filter 过滤成组数据中的非预期数据 在职责明确的控制器函数中,各自抛出类型明确的错误 用这些方法处理数据就能得到连续而可预测的信息流了

    1.1K30

    ExtJs十(ExtJs Mvc用户管理之二)

    前言 为了防止意外情况,这里添加了try模块,在错误的时候会将错误信息作为Msg关键字的值返回。 而在客户端脚本,目前是没有处理错误信息的代码的,因而在这里返回的错误信息,客户端是看不到。...在这里要处理的意外情况其实还有很多,大家可根据API的说明完善该函数。...这也是为什么在添加数据后必须返回正确的id的一个重要原因。...第一种方式必须在proxy的api定义中定义destroy配置项,之前的代码中已经定义了,因而本示例将使用该方式。...因为Ajax提交不是根据返回的success值来调用success方法或failure方法的,只要不是页面错误,都会执行回调函数success方法,因而要自己根据返回的数据,调用decode方法将数据转换为对象

    6.7K20

    AngularJs指令解密

    factory_function(函数) 这个函数返回一个对象,其中定义了指令的全部行为。$compile服务利用这个方法返回的对象,在DOM调用指令时来构造指令的行为。...在例子中我们使用my-前缀(比如my-derictive)。 当AngularJS在DOM中遇到具名的指令时,会去匹配已经注册过的指令,并通过名字在注册过的对象中查找。...controller(字符串String | 函数Function) 可选: * 字符串:以字符串的值为名字,查找注册在应用中的控制器的构造函数 * 函数:直接定义内联的控制器 可以向控制器中注入如下服务...require会将控制器注入到其值所指定的指令中,并作为当前指令的链接函数的第四个参数。 默认情况下,指令只会在自身的元素上查找控制器。可以用下面的前缀进行修饰,改变查找控制器时的行为: ?...一个指令会将内部子指令的模板合并在一起成为一个模板函数并返回,它无法查找父指令,只能通过模板函数访问内部子指令 ngModel ngModel提供更底层的API来处理控制器内的数据。

    2.2K70

    WinCC VBS 脚本的实用技巧问答 (TIA Portal )

    脚本类型必须是 “ Function ” 才可以有返回值。...在 “ Parameter ” 表格中您以创建脚本变量用来将内部变量或控制器变量传入在脚本需要的时候。 组态函数返回值,在脚本中为脚本的名称分配表达式。 例如 组态函数类型,。...图. 02 在脚本中使用 "HMI_Tag_1" 的值赋给"Parameter_1" ,"HMI_Tag_2" 的值赋给"Parameter_2" ,必须有一行脚本定义了返回值。...16、如何在脚本中保存变量值当他们在两个脚本之间调用? 在两个脚本间相互传递数据需要使用全局变量。全局变量可以是 HMI 或者 PLC 变量。 脚本中定义的变量总是在脚本结束时删除。...对象的属性修改仅是暂时的,当屏幕更改后视图使用组态时的配置。 21、如何在运行时选择一个画面对象(例如输入输出域)?

    5.5K20

    滴滴前端常考vue面试题_2023-02-28

    对于最终的结果,两种方式是相同的 不同点: computed: 计算属性是基于它们的依赖进行缓存的,只有在它的相关依赖发生改变时才会重新求值; method 调用总会执行该函数。 如何定义动态路由?...ref返回的响应式数据在JS中使用需要加上.value才能访问其值,在视图中使用会自动脱ref,不需要.value;ref可以接收对象或数组等非原始值,但内部依然是reactive实现响应式;reactive...Vue为什么没有类似于React中shouldComponentUpdate的生命周期?...生成阶段:将最终的AST转化为render函数字符串。 为什么在 Vue3.0 采用了 Proxy,抛弃了 Object.defineProperty?...发送请求中,配置请求的根路径 axios.defaults.baseURL = '/api' 方案二 此外,还可通过服务端实现代理请求转发 以express框架为例 var express = require

    84730

    webpack-dev-middleware 源码解读

    它作为一个容器,将 webpack 编译后的文件存储到内存中,然后在用户访问 express 服务时,将内存中对应的资源输出返回。...最后,我们只需要返回 express 的中间件就可以了,而中间件则是调用 middleware(context) 函数得到的。下面,我们来看看 middleware 是如何实现的。...middleware.js 此文件返回的是一个 express 中间件函数的包装函数,其核心处理逻辑主要针对 request 请求,根据各种条件判断,最终返回对应的文件内容: function goNext...ready(context, processRequest, req); }); 最后,中间件返回一个 Promise 实例,而在实例中,先是定义一个 processRequest 方法,此方法的作用是根据上文中找到的...中,而上文中我们说到在 compile.hooks.done 上注册了回调函数 done,等编译完成之后,将会执行这个函数,并循环调用 context.callbacks。

    49811

    框架设计:如何基于 Egg 设计 Node 的服务框架

    在 API 下面,对于数据的业务流转流转逻辑,在上面对于数据的调用和组装,这就是数据层面的天然分界点,而 Node 植入进去,也必须在 API 这一层与 Java 保持规范的统一和兼容,通过 RPC 无缝的调用才能来谈边界...为什么选择 Eggjs 小菜前端在使用 Eggjs 作为 Nodejs 的基础服务框架之前使用过诸如 Koa、Express、Koa2、Thinkjs 等框架,其中与 Eggjs 最接近的当属奇舞团开源的...API 和常用工具函数以及常用的插件(redis、gateway)等统一集成在基础框架 baseFramework 中,由于 Egg 支持多级框架继承,所以我们可以根据基础框架 baseFramework...返回数据格式化 方法同上,我们可以在 BaseController 中定义统一的调用成功和调用失败返回函数,并在函数中处理返回数据从而避免返回数据不规范的问题 3....有两种方式可以做到: 在框架加载时调用 app.loader.loadToContext 将所有 controller 对应的参数校验函数挂载到 context 上,在 controller 执行相应的处理函数时调用

    1.4K21

    1. 初始SpringMVC

    MVC是一种软件架构模式(是一种软件架构设计思想,不止Java开发中用到,其它语言也需要用到),它将应用分为三块: M:Model(模型) V:View(视图) C:Controller(控制器) 应用为什么要被分为三块...在SpringMVC中,表单提交时可以自动将表单数据绑定到相应的JavaBean对象中,只需要在控制器方法的参数列表中声明该JavaBean对象即可,无需手动获取和赋值表单数据。...视图解析:SpringMVC框架提供了多种视图模板,如JSP、Freemarker、Velocity等,并且支持国际化、主题等特性。而在Servlet开发中需要手动处理视图层,增加了代码的复杂度。...调用相应的控制器:DispatcherServlet将请求发送给找到的控制器处理,控制器将执行业务逻辑,然后返回一个模型对象(Model)。...first 给视图解析器 视图解析器找到 /WEB-INF/templates/first.html 文件,并进行解析,生成视图解析对象返回给前端控制器DispatcherServlet 前端控制器DispatcherServlet

    13310

    Vue.js高仿饿了么外卖App学习记录

    Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件,Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。...的缩写,用一种业务逻辑,数据,界面显示分离的方法来写代码,view视图,视图层调用控制器到controller控制器,控制器调用model,model返回数据给控制器,然后控制器将数据返回给view。...这是mvc的简单调用流程,mvc模式是单向的数据绑定,view视图层调用model层,要通过中间层controller来实现。...,height控制视图窗口的高度,这个属性很少用,initial-scale为控制页面最初加载时在最理想的情况下缩放的等级,通常设置为1.0,可以是小数,maximum-scale为允许用户的最大缩放量...在很早的时候,只有物理像素,没有独立像素,在不缩放的前提,css中的1px代表着一个物理像素。

    2.3K11

    JavaScript是如何工作的:引擎,运行时和调用堆栈的概述!

    我们还将分享构建 SeStHealsStad 时使用的一些经验法则,这是一个轻量级的 JavaScript 应用程序,必须保持健壮和高性能以保持竞争力。...Call Stack(调用堆栈) — 代码执行的地方 Runtime(运行时) 有些浏览器的 API 经常被使用到(比如说:setTimeout),但是,这些 API 却不是引擎提供的。...如果我们运行到一个函数,它就会将其放置到栈顶,当从这个函数返回的时候,就会将这个函数从栈顶弹出,这就是调用栈做的事情。...我们来看看下面的代码: image.png 当引擎开始执行这段代码时,它首先调用函数“foo”。然而,这个函数是递归的,并且在没有任何终止条件的情况下开始调用自己。...因此,在执行的每一步中,相同的函数都会被一次又一次地添加到调用堆栈中,如下所示: image.png 然而,在某些时候,调用堆栈中的函数调用数量超过了调用堆栈的实际大小,浏览器决定采取行动,抛出一个错误

    1.1K50

    GraphQL 初体验,Node.js 构建 GraphQL API 指南

    在传统的基于 REST 的 API 方法中,客户端发出请求,而服务端决定响应。 但是在 GraphQL 中,客户端可以精确地确定其从服务器获取的数据。...然后你可能需要进行另一个 API 调用以获取有关地址的信息,该信息存储在另一张表中。随着应用程序的发展,由于其构建方式的原因,你可能需要继续对不同位置进行更多的 API 调用。...虽然每一个 API 调用都可以异步完成,但你也必须处理它们的响应,无论是错误、超时甚至暂停页面渲染,直到收到所有请求数据。...另一部分涉及实际获取数据,这是通过使用解析器完成的,解析器是一个返回字段基础值的函数。 让我们看一下如何在 Node.js 中实现解析器。...在左侧窗格中,你可以输入所需要的任何有效 GraphQL 查询,而在右侧获得结果。

    8.3K40

    第一章 Web MVC简介 —— 跟开涛学SpringMVC

    到此我们了解了在web开发时的请求/响应模型,接下来我们看一下标准的MVC模型是什么。...Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作,。...从图1-1我们还看到,在标准的MVC中模型能主动推数据给视图进行更新(观察者设计模式,在模型上注册视图,当模型更新时自动更新视图),但在Web开发中模型是无法主动推给视图(无法主动更新用户界面),因为在...、业务对象调用); 控制器中的视图选择与具体视图技术分离。...轻薄的web表现层:     做的事情越少越好,薄薄的,不应该包含无关代码;        只负责收集并组织参数到模型对象,启动业务对象的调用;        控制器只返回逻辑视图名并由相应的应用控制器来选择具体使用的视图策略

    98110

    与我一起学习微服务架构设计模式8—外部API模式

    开发人员必须更新API Gateway才能对外公开服务的API。更新过程要尽可能轻量化,必要时使用后端前置模式。...简单情况下,查询文档包含查询的名称,参数值及要返回结果的对象字段。 把模式连接到数据源 当GraphQL服务器执行查询时,必须从一个或多个数据存储中检索所请求的数据。...通过将解析函数附加到模式定义的对象类型字段,可以将GraphQL模式与数据源相关联。GraphQL通过调用解析器函数检索数据,以此实现API组合模式。...GraphQL通过递归调用Query文档中指定的字段解析器函数来执行查询。首先,它执行查询解析器,然后递归调用结果对象层次结构中字段的解析器。...为了让客户端调用GraphQL,你需要将它与Web框架集成,如Express Web

    1.4K30
    领券