我正在使用带有 Loopback 3 的 Fireloop,并且想知道如何最好地使用类型检查PersistedModel
和方法来创建类型安全挂钩和远程Validatable
方法。我想将构造函数的类型从 ...
constructor(public model: any) { }
至 ...
constructor(public model: SomeType) { }
我想进行 PersistedModel 调用,例如
this.model.count().then((n) => ...);
或可验证的调用,例如:
model.validatesLengthOf('code', {
min: 6, max: 12, message: { min: 'too short', max: 'too long'}
});
像下面这样的 Fireloop 示例仅用any
作this.model
. firestarter 模型示例和 Fireloop 文档在这里也没有用。
我知道在core/index.d.tsModelConstructor
下的 fireloop 源代码树中声明了一种类型。这个接口看起来是正确的,因为它实现了所有的和方法,但是它在 npmjs 中发布在哪里?它已经是 Fireloop 服务器 SDK 的一部分还是我需要它?不知道。PersistedModel
Validatable
npm install
import { Model } from '@mean-expert/model';
/**
* @module Account
* @description
* Write a useful Account Model description.
* Register hooks and remote methods within the
* Model Decorator
**/
@Model({
hooks: {
beforeSave: { name: 'before save', type: 'operation' }
},
remotes: {
myRemote: {
returns: { arg: 'result', type: 'array' },
http: { path: '/my-remote', verb: 'get' }
}
}
})
class Account {
// LoopBack model instance is injected in constructor
constructor(public model: any) { }
// Example Operation Hook
beforeSave(ctx: any, next: Function): void {
console.log('Account: Before Save', ctx.instance);
next();
}
// Example Remote Method
myRemote(next: Function): void {
this.model.find(next);
}
}
module.exports = Account;
最后,我还尝试使用Loopback 3 Typescript 定义,但遇到了更多问题,因为这里的 PersistedModel 方法都被声明为静态,因此类型检查失败并返回Promise<T> | void
。后者意味着您被迫将结果类型强制转换回 just Promise<T>
,因此类型 def 作者似乎从未真正使用过它们。这是一个错误还是我错过了什么?找不到任何工作示例来证明其他情况。
这是服务器端 API 的痛点。Fireloop 的客户端 REST API 也没有记录(很多实时 API 的示例),但它也应该包含的 REST api 没有记录(只是在一期中提到过一次)。很高兴发现它都可以通过 Typescript 进行类型检查。