首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Rails API返回的时间格式化过多

Rails API返回的时间格式化过多
EN

Stack Overflow用户
提问于 2018-02-28 00:53:07
回答 3查看 148关注 0票数 0

我设置了一个索引端点API。此API控制器不是从应用程序控制器继承的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def index
    @projects = Project.all
    respond_with @projects
end

查询它将返回:

[{"id":7,“名称”:“某物”,“位置”:“美国”,"user_id":54,"created_at":{"^o":"ActiveSupport::TimeWithZone","utc"://don't need {"^t":1513746428.835358000},"time":null,"time_zone"://don't need

问题是,它会在每个project中返回大量的时区信息,这会降低应用程序的运行速度。

如何才能在没有时区混乱的情况下,仅返回PG数据库中显示的created_at时间戳?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-04 20:16:36

不得不打电话给:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Project.where(company_id: @current_company.id).as_json

在呈现JSON之前。

respond_with本身使用了额外的时区转换

票数 0
EN

Stack Overflow用户

发布于 2018-02-28 00:59:26

在select查询中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Select (created_at at time zone 'pst') as created_at from ...
票数 1
EN

Stack Overflow用户

发布于 2018-02-28 02:02:52

看起来你想要实现的是你的json的受控格式化。

如果是这样的话,我认为您应该创建一个json视图。我没有使用响应器gem,所以可能会有一些我看不到的细微差别,但通常你会创建一个文件来指定你想要返回的内容。

在index.json.jbuilder中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
json.array! @projects, :id, :name, :location, :user_id, :created_at

按照我的项目的配置方式,created_at显示如下:"created_at":"2017-12-17T10:09:12.141Z"。但是,根据该ActiveSupport类的序列化行为,您可能仍然会遇到问题。如果是这样,您可以通过调用一个方法进一步自定义输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
json.array! @projects do |project|
  json.extract! project, :id, :name, :location, :user_id
  json.created_at project.created_at.utc
  # Or perhaps something like:
  #   json.created_at project.created_at.in_time_zone.as_json
end

如果您的用例使jbuilder不合适,您可以使用不同的序列化程序。

ActiveModel::Serializer是一种常见的选择;您可以控制序列化的属性,也有控制如何序列化这些属性的机制。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class ProjectSerializer < ActiveModel::Serializer
  attributes :id, :name, :location :created_at
  belongs_to :user
end

不过,有一个重要的警告:我不能完全重现您的问题。在我创建的一个全新的极简主义rails api项目中,从render json: @projects, status: :ok返回的json (没有jbuilder,没有自定义)为我返回了"created_at":"2018-02-28T02:31:10.603Z“,所以我认为您需要弄清楚如何将ActiveSupport TimeWithZone实例插入到您的序列化格式中。这可能是你的应用程序的配置问题导致的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49020332

复制
相关文章
redux-thunk
一、redux-thunk介绍 redux-thunk用于处理异步action,同类型的有redux-saga
_kyle
2020/08/24
5860
理解 React 中的 Redux-Thunk
Thunk 是一个逻辑编程概念。你可以用来处理推迟任何事件的计算或者评估的函数,并且 React-Thunk 可以有效地充当应用程序的单独线程。
Jimmy_is_jimmy
2023/07/09
5670
理解 React 中的 Redux-Thunk
React-Redux-thunk
React-Redux-Thunk是一个用于处理Redux异步操作的中间件,它扩展了Redux的能力,使您能够更轻松地处理异步操作,如网络请求或定时任务。
杨不易呀
2023/10/01
2270
redux-thunk中间件
最近在看redux,主要是redux官方教程(参考文章1)和网上文章(参考文章2),基础部分已经看完,正在理解middleware中间件部分,自我感觉中间件的思想不难理解,主要是它的实现方式涉及到函数式编程,真的太抽象了。redux-thunk是一种中间件,它能使你在action creator中返回函数,此返回函数就是thunk函数,模拟一下就是
张宗伟 plus
2022/10/28
5580
React-Redux-thunk实现原理
React-Redux-Thunk是一个用于处理Redux异步操作的中间件,它的实现原理基于Redux middleware的概念。它的核心思想是允许action creators返回函数而不是普通的action对象。
杨不易呀
2023/10/01
2250
redux-thunk 中间件的示例
Redux处理异步任务——异步数据流中间件:redux-thunk & action是一个函数,函数内部处理异步任务
用户9914333
2022/07/22
5650
redux-thunk引发的redux middleware和store enhancer浅析
项目中使用redux-thunk来解决异步请求的问题,但是为什么要引入redux-thunk来解决异步请求问题,不借助redux-thunk就无法解决吗?
IMWeb前端团队
2019/12/03
1.1K0
造一个 redux-thunk 轮子
哈?redux-thunk 不就是那个只有 14 行代码的轮子嘛?我一行就能写出来还要你来教我做事?
写代码的海怪
2022/03/29
7520
造一个 redux-thunk 轮子
Thunk函数的使用
编译器的求值策略通常分为传值调用以及传名调用,Thunk函数是应用于编译器的传名调用实现,往往是将参数放到一个临时函数之中,再将这个临时函数传入函数体,这个临时函数就叫做Thunk 函数。
WindRunnerMax
2020/08/27
1.7K0
Redux异步解决方案之Redux-Thunk原理及源码解析
前段时间,我们写了一篇Redux源码分析的文章,也分析了跟React连接的库React-Redux的源码实现。但是在Redux的生态中还有一个很重要的部分没有涉及到,那就是Redux的异步解决方案。本文会讲解Redux官方实现的异步解决方案----Redux-Thunk,我们还是会从基本的用法入手,再到原理解析,然后自己手写一个Redux-Thunk来替换它,也就是源码解析。
蒋鹏飞
2020/10/15
3.6K0
JavaScript 中「Thunk」怎么理解?
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情
掘金安东尼
2022/09/22
4551
JavaScript 中「Thunk」怎么理解?
Redux异步解决方案 1. Redux-Thunk中间件
简单介绍一下thunk,这是一个中间件,是解决redux异步问题产生的。我们都知道,在使用redux的时候,通过dispatch一个action 发生到reducer 然后传递给store修改状态 一系列都是同步的,那如果说我dispatch一个action 这个action帮我请求一下接口数据,你发现接口请求是异步的,没有办法等接口数据返回再传递给reducer 这个时候中间件就产生啦。 redux比较常用的中间件有 redux-saga、redux-thunk、redux-promise等 都是为了解决dispatch action异步处理问题
憧憬博客
2020/07/21
1.3K0
Thunk 函数的含义和用法
本文是《深入掌握 ECMAScript 6 异步编程》系列文章的第二篇。 Generator函数的含义与用法 Thunk函数的含义与用法 co函数库的含义与用法 async函数的含义与用法 一、参数的
ruanyf
2018/04/12
1K0
Thunk 函数的含义和用法
ATL Thunk机制学习
  ATL模板类库使用Thunk技术来实现与窗口消息相关联的HWND和负责处理消息的对象的this指针之间的映射。      ATL中窗口类注册时,窗口过程函数缺省值都是StartWindowProc,当创建窗口产生第一条消息时将调用此函数。 StartWindowProc是CWindowImplBase的一个静态成员函数,它的工作是建立CWindowImpl派生对象的HWND与对象的 this指针之间的映射。在新的HWND被缓存到WindowImpl派生对象的成员数据中之后,对象真正的窗口过程将替代 StartWindowProc窗口过程,并且窗口过程参数HWND被替换成对象指针值。
雪影
2018/08/02
8140
前端react面试题(必备)2
this.props是组件之间沟通的一个接口,原则上来讲,它只能从父组件流向子组件。React具有浓重的函数式编程的思想。
beifeng1996
2023/01/04
2.3K0
Thunk程序的实现原理以及在iOS中的应用(二)
thunk程序其实就是一段代码块,这段代码块可以在运行时动态构造也可以在编译时构造。thunk程序除了在第一篇文章中介绍的用途外还可以作为某些真实函数调用的跳板(trampoline)代码,以及解决一些函数参数不一致的调用对接问题。从设计模式的角度来讲thunk程序可以作为一个适配器(Adapter)。本文将重点介绍如何通过编译时的静态代码来实现thunk程序的方法,以便解决上一篇文章对于iOS系统下指令动态构造的约束限制的问题。
欧阳大哥2013
2019/03/05
1.1K0
如何序列化Js中的并发操作:回调,承诺和异步等待
我们经常不关心并发操作的完成顺序。例如,假设我们有一个Web服务器处理来自客户端的请求。每个请求所花费的时间可能会有所不同,响应返回的顺序也无关紧要
itclanCoder
2020/10/28
3.2K0
如何序列化Js中的并发操作:回调,承诺和异步等待
深度剖析github上15.1k Star项目:redux-thunk
日益忙碌的一周又过去了,是时候开始每周一次的总结复盘了,今天笔者就来剖析一下github中star数15.1k的开源项目redux-thunk。
徐小夕
2020/08/20
7580
深度剖析github上15.1k Star项目:redux-thunk
redux原来如此简单
redux是专门为react开发的,但并不是只能用于react,可以用于任何界面库。
frontoldman
2019/09/03
7480
应用connected-react-router和redux-thunk打通react路由孤立
在我们开发过程中,很多时候,我们需要让组件共享某些数据,虽然可以通过组件传递数据实现数据共享,但是如果组件之间不是父子关系的话,数据传递是非常麻烦的,而且容易让代码的可读性降低,这时候我们就需要一个 state(状态)管理工具。常见的状态管理工具有 redux,mobx,这里选择 redux 进行状态管理。值得注意的是 React 16.3 带来了全新的Context API,我们也可以使用新的 Context API 做状态管理。Redux 是负责组织 state 的工具,但你也要考虑它是否适合你的情况。
Run丘比特
2020/11/19
2.4K0
应用connected-react-router和redux-thunk打通react路由孤立

相似问题

javascript - redux thunk不等待任何承诺

49

使用Typescript的Redux Thunk

11

如何添加‘`redux thunk`’和‘`redux承诺’?

25

React Redux-Thunk with Typescript

25

Redux thunk:从出动行动中返回承诺

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文