小编Kli*_*vić的帖子

嵌套对象的 AJV 模式验证

函数返回的对象看起来像这样:

    {
        "answer": {
           "vehicle_type": 1,
           "message": "Car"
        },
        "model": "VW",
        "color": "red"
    }
Run Code Online (Sandbox Code Playgroud)

“答案”对象始终存在。其他字段基于“vehicle_type”。

例如

如果vehicle_type = 1,则有“型号”和“颜色”。

如果vehicle_type = 2,则有“engine_count”、“seat_count”和“wing_count”。

我正在尝试编写 JSON 模式,我将用它来验证返回的对象。

如果“vehicle_type”为 1,我想将“model”和“color”设置为必需属性。如果“vehicle_type”为 2,则需要“engine_count”、“seat_count”和“wing_count”。

我正在使用 AJV ( https://github.com/epoberezkin/ajv ) 模式验证器。

对我来说,这是有问题的,因为vehicle_type嵌套在“answer”内,而我想要标记为必需的属性位于父对象上。换句话说,“validation_type”与“model”或“engine_count”不在同一级别。

我已经采用了几种不同的方法...我也尝试使用 ajv-keywords(switch,if/else/then),但我没有任何运气

有任何想法吗?

javascript json jsonschema node.js ajv

6
推荐指数
1
解决办法
1万
查看次数

Google 结算免费试用 - 同一用户多次

我们正在实施带有服务器端验证的 Google Billing。

我们必须支持的功能之一是“免费试用”。单个用户只能参与一次“免费试用”。

如果他取消订阅,然后尝试再次购买相同的订阅,则会出现一条注释“您已经参加了免费试用”(这意味着用户将无法获得试用期。相反,他必须立即付款)。该场景非常适合生产/生活环境。

然而,在测试环境(或开发环境,尤其是开发环境)中,我们做了很多尝试和重复步骤(这意味着我们多次使用同一个谷歌用户经历订阅生命周期),这是真正的痛苦屁股。对于每次迭代,我们都必须创建新的谷歌用户。

我的问题是:

1 - 有没有办法在测试环境(测试环境= google play测试轨道)中为特定用户(或所有人)重新启用“免费试用”。

或者

2 - 有其他方法可以让我们的生活更轻松吗?

google-play android-billing in-app-subscription google-play-developer-api google-play-console

6
推荐指数
1
解决办法
3697
查看次数