我使用 OpenAPI 3.0.1,并使用具有类型/值验证的组件。(即类型/枚举/范围)。
当我使用错误的类型/值访问相关路径时,我会收到一条人类无法阅读的默认消息,例如:
"message": "request body has an error: doesn't match the schema: Error at <fieldName>: Doesn't match schema \"oneOf\"".
Run Code Online (Sandbox Code Playgroud)
相反,我想为每个组件创建自定义错误消息,即:
invalid argument: <fieldName>.
Run Code Online (Sandbox Code Playgroud) 为了进行散列和验证,application/json需要 post 请求的原始主体(无需解析)。Loopback 4 是否提供了任何方法?Request.body被解析为 json。
我在这里按照这个示例进行简单的日志记录中间件设置。但我似乎无法让它记录我的请求信息。当我点击 时,我得到了标准响应/ping,但没有任何内容被注销到控制台。
我尝试在两个不同的位置注册中间件。index.ts和application.ts。
// src/middleware/log.middleware.ts
import { Next } from '@loopback/core'
import { Middleware, MiddlewareContext } from '@loopback/rest'
export const testLoggingMiddleware: Middleware = async (
middlewareCtx: MiddlewareContext,
next: Next,
) => {
const { request } = middlewareCtx
console.log('Request: %s %s', request.method, request.originalUrl)
try {
// Proceed with next middleware
await next()
// Process response
console.log('Response received for %s %s', request.method, request.originalUrl)
} catch (err) {
// Catch errors from downstream middleware …Run Code Online (Sandbox Code Playgroud) 我在环回 3.0 中使用存储组件来访问云存储。但我需要如何在环回 4.0 中实现。下面的链接使其在 3.0 中采样。
我注意到一些 TypeScript 节点模块(例如loopback-next/packages)使用节点模块发布它们的源文件。这是否有特殊原因,还是只是不必要地增加了模块的大小?
因此,根据我对 webhook 的理解,我不断查找“如何从我的 API 创建 webhook”,但结果不断告诉我如何从不同站点添加 webhook(来自 GitHub)。我不确定这是否可行,但目前,我的 React Native 应用程序每分钟都会轮询我的 Node JS 后端以获取信息。相反,我希望我的 Node js 后端检测特定用户数据库中的更改,然后将更新的信息发送给我的 React Native 应用程序用户。这是否可能,是否有人有任何指导或方向,甚至是链接,因为我在网上找到的所有信息都不是我想要的?是否有任何第三方应用程序可以在此过程中提供帮助?我具体需要做什么?
我正在尝试向我的应用程序添加身份验证。有两种模型,分别称为用户和用户凭证。用户拥有一个用户凭证。
对用户的发布请求工作正常。密码存储在用户凭证模型(散列)中,其他字段存储在用户模型中。
但是当我发出登录请求时,我收到以下错误
POST /users/login 中未处理的错误:500 TypeError:this.userRepository.findCredentials 不是 MyUserService.verifyCredentials 中的函数(D:\ionic-pr\loopback-projects\no\node_modules@loopback\authentication-jwt\src\services \user.service.ts:38:56) 在 process._tickCallback (内部/process/next_tick.js:68:7)
节点模块中的authentication-jwt内的用户服务抛出错误。
我不明白出了什么问题。
先感谢您
编辑: 现在我已经制作了两个控制器。第一个使发布请求工作正常。第二个执行登录如下
进口-
import {TokenService} from '@loopback/authentication';
import {Credentials, MyUserService, TokenServiceBindings, UserRepository, UserServiceBindings} from "@loopback/authentication-jwt";
import {inject} from '@loopback/core';
import {repository} from '@loopback/repository';
import {post, requestBody} from '@loopback/rest';
import {SecurityBindings, UserProfile} from '@loopback/security';
Run Code Online (Sandbox Code Playgroud)
构造函数 -
constructor(
@inject(TokenServiceBindings.TOKEN_SERVICE)
public jwtService: TokenService,
@inject(UserServiceBindings.USER_SERVICE)
public userService: MyUserService,
@inject(SecurityBindings.USER, {optional: true})
public user: UserProfile,
@repository(UserRepository) protected userRepository: UserRepository,
)
Run Code Online (Sandbox Code Playgroud) Loopback 4 中是否有一种方法可以使用@get()装饰器(或任何其他装饰器),传递路径但不生成该路由的开放 api 规范?
通过传递特殊参数/使用@operation或其他什么?
谢谢。
使用 lb4 生成器创建模型、存储库和控制器。
向模型添加新字段时,我的 POST 将开始失败并出现以下错误: 500 Error: schema is invalid: data.$ref should match format "uri-reference"
该错误太模糊了,我对它所要求的内容的参考为零。
比较以下情况时验证失败:
$schema = http://json-schema.org/draft-07/schema
$ref = #/components/schemas/新用户
编辑:显然,如果您向控制器添加标题选项,它不知道如何处理自己
我想用一个查询针对 10 个查询插入 10 个条目。
我需要设置一些东西吗?我根本不知道该怎么办。
带有示例的仓库:https://github.com/mathias22osterhagen22/loopback-array-post-sample
编辑:people-model.ts:
import {Entity, model, property} from '@loopback/repository';
@model()
export class People extends Entity {
@property({
type: 'number',
id: true,
generated: true,
})
id?: number;
@property({
type: 'string',
required: true,
})
name: string;
constructor(data?: Partial<People>) {
super(data);
}
}
export interface PeopleRelations {
// describe navigational properties here
}
export type PeopleWithRelations = People & PeopleRelations;
Run Code Online (Sandbox Code Playgroud) loopback4 ×10
loopbackjs ×4
typescript ×4
loopback ×3
node.js ×3
openapi ×2
express ×1
go ×1
node-modules ×1
post ×1
postgresql ×1
react-native ×1