问题标签 [servicestack-autoquery]

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.

0 投票
1 回答
201 浏览

servicestack - ServiceStack 自动查询到自定义 DTO

因此,我正在使用 ServiceStack,并且对它有所了解。我使用过 AutoQuery 并发现它在调用直接的“GET”消息时是必不可少的。不过我遇到了一个问题,我已经看了几个小时了。我希望这只是我忽略的东西。

我为我的 AutoQuery 消息设置了一个简单的类:

我有一个 OrmLite 连接,用于从数据库中检索 db_camera 整体。这一切都很好。我不想从数据库中返回模型,但我想返回一个 DTO,我已将其定义为另一个类。因此,使用 QueryDb 的版本,我的请求消息现在是这样的:

Camera 类是我的 DTO。调用仍然执行,但我没有得到任何结果。我在 db_camera 类上设置了一个映射器扩展方法 ToDto() 以返回一个 Camera 实例。

也许我只是习惯了 ServiceStack 让事情变得如此简单......但是我如何获得上面的 AutoQuery 请求来执行我的请求的映射?由于我指定了我想要的转换,数据检索现在对我来说是手动操作吗?那么这种类型的价值在哪里呢?现在我有责任查询数据库,然后在我的数据模型记录上调用 .ToDto() 以返回 DTO 对象吗?

编辑:我刚刚观察到的其他事情......我仍然从 AutoQueryViewer 中返回的数据集中获取行数,但字段名称是数据模型类 db_camera 而不是 Camera。

在此处输入图像描述

0 投票
1 回答
33 浏览

servicestack - ServiceStack - 自动查询和交换客户端模板

使用 ServiceStack 的自动查询,我定义了一个简单的请求 DTO(下面的示例)。我想交换模板(布局)以使用不同的 Razor 布局(根据此处的 SS 模板交换文档)?

请求 DTO 示例:

布局示例:_Layout.cshtml 和 _PrintFriendly.cshtml 模板

对于上述查询,我​​想在客户端级别交换布局。

0 投票
0 回答
20 浏览

servicestack - 使用 ServiceStack 的 AutoQuery UI 结果中的辅助查询的超链接

首先,我对 ServiceStack 的简单和高性能感到惊讶。不敢相信我已经离开了这么久没有唱这首歌。

我特别喜欢 AutoQuery 和 Admin 功能,但就我的一生而言,我一直在努力寻找有关如何扩展响应的文档。我想要做的是在响应中提供一个超链接,以便从返回的行开始导航。

例如,如果从 /records 返回记录列表,并且主键(Id 字段)实际上可能是一个链接(即 ABC123),它是它自己的 DTO。

我注意到 AutoQueryMetadataFeature,所以怀疑这提供了一些提示,但对整个解决方案来说非常新,因此非常感谢任何指针。

干杯克雷格

0 投票
1 回答
146 浏览

c# - AutoQuery / Ormlite-servicestack:我可以过滤掉 QueryDb 类的软删除吗?

我们有一些使用 Ormlite/Servicestack 构建的服务,我们主要使用QueryData自定义逻辑提取数据库对象和 POCO。

但是,我们有一个表,它确实不需要在逻辑上进行扩展,并且可以很好地使用 AutoQuery 和 URL 参数直接从前端查询数据库。但是,此表包含一个isDeleted用于跟踪软删除的列。前端不应该有任何软删除的项目,我们认为前端不应该能够获取这些记录(即不应该负责使用 a 查询 API ?&isDeleted=false)。

因此,鉴于我们当前的设置:

...是否可以为QueryDb<>自动排除记录在哪里实施过滤器isDeleted=true?这是否只能应用于此表/类?

我正在准备牛奶和饼干,希望mythz 路过并留下礼物……当然,感谢您的帮助!

0 投票
1 回答
182 浏览

c# - ServiceStack - 为某些类强制生成 Typescript 类型

我正在使用主要关注 ServiceStack API 的后端和与之JsonServiceClient交互的 Typescript 前端(带有 ServiceStack )。这是一个大型项目,因此扩展能力非常重要,我们的目标是始终拥有强大的类型执行力。到目前为止一切进展顺利,但我在这里遇到了障碍。

我们有一个实体,我称之为Gadget

通过 AutoQuery,我们有一个返回列表Gadgets 的端点:

但是,需要创建多个Gadgets 类,因此我重构了小工具从基类和接口派生:

我已经重构了我们的端点来代替接口:

这很好用。由于我们使用QueryData,我们可以创建一个List<IGadget>作为响应发回的,包括每个实现类型。

我遇到的问题是为派生类生成 Typescript 类型,例如GadgetBaseTabbedGadget. 我理解为什么它们不是自动生成的,因为 API 元数据中没有使用这些类型,但到目前为止,我不知道如何与 Typescript 客户端通信,列表可能包含实现的具体数量的类型IGadget,以及如何生成这些类型。

有没有办法,通过一些 ServiceStack 属性或通过不同的方法,我可以“强制”生成这些 Typescript 类型并将它们暴露在元数据(/types/typescript)中?

提前谢谢!

0 投票
1 回答
94 浏览

servicestack - Servicestack 自动查询自定义约定不适用于 PostgreSQL

我已经定义了新的隐式约定

问题是对于 postgres 连接,查询被错误地翻译成

并且它不会将参数发送到数据库。在内置约定的情况下,它可以正常工作。

更新

我试图定义 EndsWithConvention 但有同样的问题 - 参数没有传递给 pgsql 引擎(但是它在 SqlExpression 中可用)

更新 2 以下定义导致 PostgresException: 42601: błąd składni w lub blisko "$1" (抱歉波兰语错误)

生成的查询是

更新 3

生成

并发出 PostgresException: 42883: operator doesn't exist: date - text

这是 dto 定义

模型:

最终解决方案 @mythz 解决了注册问题和在我的原始查询中使用间隔子句的问题。从现在开始,以下定义可以很好地获取过去 X 天内的记录。谢谢@mythz

0 投票
1 回答
205 浏览

c# - AutoQuery 无法查询嵌套对象

自动查询找不到字段

我有以下课程:

当我尝试通过 TF 在 AutoQuery 查看器中查询时,如下所示:

所有域结果都未经过滤返回,并且每个 TF 值都显示为 0。

我尝试添加 IJoin:

但随后查询不返回任何结果。

我已经签入了数据库,并且 TF 确实有一个值。我正在使用 PostgreSql 提供程序。

我希望它显示 TF 值并且可过滤。我做错了什么?

编辑:

好的,所以问题似乎是不支持大于运算符。

如果我做:

然后调试输出显示

但如果我这样做:

然后有一个参数值传递。

是否可以在联合属性上使用大于/小于?如果不是,我该如何添加自己?

:使固定

我将它设置为可为空的 intint? MajesticApiDataTF然后它工作

0 投票
1 回答
145 浏览

servicestack - xUnit 测试 Servicestack 自动查询

第一次使用 AutoQuery,我在实现 AutoQuery 后遇到了单元测试问题。它通过 Swagger 手动测试工作正常。所以我有一个像这样的get方法:

请求/响应是这样构建的:

和测试:

问题是 CreateQuery 方法中的 Request 仍然为空(当我运行应用程序时,它已正确填充)。那么我应该在 xunit 测试中做什么才能让 Request 成为正确的对象而不是 null 呢?Ofc 我在测试执行时得到空异常。是否有任何机制来预设请求?谢谢你的帮助。

//////更新:我尝试了使用内置客户端建议的不同方法:

Request 不再为 null,但 CreateQuery 仍返回 null。我觉得我仍然缺少一个或几个参数,但我不知道在哪里。当我通过 IIS 运行应用程序时,我比较了 Request 对象和为单元测试创​​建的对象,它们看起来很相似,但并不相同。

//////解决方案
JsonServiceClient 终于工作了。我需要将 AQ 插件添加到测试设置类并将结果属性添加到响应类中以将结果传递给 QueryResponse 实例。根本不需要更改内置的 JasonServiceClient,默认参数就可以了。我无法根据 BasicRequest 使其工作。但我得到了我需要的东西,这已经足够了。

0 投票
1 回答
106 浏览

nested - 如何使用 ServiceStack 获取嵌套元素?

虽然我可以使用下面的代码访问 SchemaVersion,但我无法访问 FormatDocID 嵌套元素。

任何想法如何使用 ServiceStack 和 AutoQueryFeature (或类似)轻松获取 FormatDocID ?

我在这里只放了相关的代码部分

设置插件

可序列化的类

提前感谢您的答案。

0 投票
1 回答
74 浏览

servicestack - ServiceStack AutoQuery 合成字段

在 Northwind 示例的 Customer DTO 中,有一个Email合成字段——即它不是来自数据库。此处代码:https ://github.com/ServiceStackApps/Northwind/blob/master/src/Northwind/Northwind.ServiceModel/Types/Customer.cs

但是在运行示例中查看时,此字段不可见: http: //northwind.servicestack.net/query/customers

我注意到这个 DTO 有 [DataContract] 和 [DataMember] 注释,而大多数其他示例没有。

如何将合成字段添加到 AutoQuery?只需添加一个带有 pupulated getter 的方法就会给我一个错误,因为 ServiceStack 会尝试从数据库中获取它。是否应该使用“忽略”注释?或者最好的方法是将“DTO-for-database”和“DTO-for-the-service”分开,并以某种方式在它们之间使用 AutoMapper?