问题标签 [miragejs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - mirage.js 多通配符直通
背景
我们正在使用 miragejs 来模拟服务器 API。我们的服务器/后端,遵循微服务架构,每个微服务都是单独版本的,因此我们的 api 路径有
{base_version}
- 服务器/发布版本,根据环境更改(dev / qa / uat / prod){microservice_version}
- 每个环境中的每个微服务都不同
一个典型的 api url 看起来像
example.com/
{base_version}
/microservice/{microservice_version}
/api_endpoint?parameter=value
问题
在为 miragejs 模拟设置路线时,
- 对 和 都使用通配符 (*)
{microservice_version}
并{base_version}
失败,并导致直通:
example.com/*/microservice/*/api_endpoint?parameter=value
但是,以下所有操作都可以正常工作:
- 通配符
{base_version}
和实际值{microservice_version}
example.com/*/microservice/v2/api_endpoint?parameter=value
- 通配符
{microservice_version}
和实际值{base_version}
example.com/v3/microservice/*/api_endpoint?parameter=value
- 双通配符(转义
{microservice_version}
,{base_version}
和介于两者之间的任何内容)
example.com/**/api_endpoint?parameter=value
上述 3 个可行的解决方案中的任何一个都需要我们硬编码一个版本,或者忽略微服务名称/路径,这并不理想,因为我们有多个环境/版本、多个微服务版本以及不同微服务中的相同 api 端点(例如过滤器/ 属性)。
有没有一种干净的方法可以让 miragejs 在 api url 中使用多个通配符?
reactjs - 在这个例子中数据是如何被解构的?
我按照一篇文章制作了一个项目日记应用程序。它使用 redux 工具包和 miraj 作为假服务器。它有一个名为 Editor 的组件
作为一个新手,我无法理解以下内容:
在这一行中以我的理解条目是一个类型。但是文章中没有条目的类型或接口。第二个
我们正在发出一个发布请求,在 miraj 服务器中,我们将路由定义为:
我不明白这个 :id 部分。我们如何在这里获取 id?
最后一件事:) 在这一行: const { diary, entry: _entry } = data; 调度(setCurrentlyEditing(_entry));为什么输入前有下划线?和上面一样的问题是它是打字稿的类型还是我不知道的一些解构方法。
javascript - 如何嵌入具有多对多关系的子数据?
我在 MirageJs 中有两个模型:
- 博客
- 标签
每个博客可以有更多标签,反之亦然。我与一个名为 的连接表建立了多对多关系blog_tag
。我的问题是,当我从服务器获得响应时,标签只包含 id 属性。如何将整个标签对象嵌入到响应中?
我的服务器配置: Mirage REPL
javascript - 我应该如何嵌入具有多对多关系的 2 个模型?
我有两个具有多对多关系的模型:
- 博客
- 标签
所以每个博客都有一个tags
属性,每个标签都有一个blogs
属性。我还有两个 API 端点:/blogs 和 /tags
我的问题是,如果我在序列化程序中包含并嵌入模型,我会收到带有错误消息“超出最大调用堆栈大小”的循环引用
我想看到这样的东西:
ionic-framework - Miragejs:无法加载离子图标 - data:image/svg+xml
在浏览器控制台中出现以下错误并且图标未呈现。
试图添加this.passthrough();
和组合它,对任何一个都无济于事。它适用于 API 调用,但不适用于这种特殊情况,我的意思是图标没有被渲染。
我们如何忽略/通过请求data:image/svg+xml;utf8,...
?
javascript - 是否可以在 miragejs 上使用逻辑运算符?
我正在尝试在 miragejs 数据中进行“查询”,我有这样的事情:
如果 param1 或 param2 中的任何一个为真,我想要做的是进行查询并获取模型。如果两个参数都为真,则usingschema.modelA.where({ param1: true, param2: true })
仅返回模型,就像 SQL 中的“AND”运算符。我该怎么做,或者是否可以做类似“OR”运算符的操作,如果任何参数为真,我可以在其中获得 modelA?我已经尝试分别搜索并将其与mergeCollection合并,但它会留下重复项,所以我认为我走错了路。
javascript - 仅在需要时如何向 MirajeJS js 发出请求
我有一个用 mirajeJs 创建的假服务器。我所有的请求都在尝试与他联系,我如何才能仅在需要时才向 mirajeJs 提出请求,同时向真实服务器发出其余请求
reactjs - 如果模拟中没有这样的路线,如何将 MirajeJS 重定向到真实请求?
在 mirajeJS 的帮助下,我们可以模拟路由,但是如果在 mirajeJS 中没有模拟这样的路由,是否可以重定向它并使用 axios 使用真实的服务器?
也就是我想实现如下行为,我湿了test/router请求,但是如果用户发出任何其他没有锁定在Miraje中的请求,那么就去到真实服务器,也就是使用真实请求
javascript - 使用 LocalStorage API 持久化 Miragejs 数据库
在阅读 miragejs 的文档时,在此页面上,它说:
Mirage 会在每次浏览器重新加载时重置其状态,这可能是一把双刃剑,但通常是您在开发和测试中想要的。(如果您想向 Mirage 添加临时持久性,可以使用 localStorage。)
但是,我似乎在任何地方都找不到关于如何为数据库持久性实际设置本地存储的任何文档或示例。
有没有人有这方面的经验,或者知道我可以参考的一些代码示例或演练?