Loopbackjs 环回4包括嵌套关系
最近,环回团队增加了对嵌套关系包含的支持。参考 但它没有覆盖RESTAPI url以获取嵌套关系。这就是我尝试过的 我有三种型号的用户,手推车,产品。用户有很多推车,推车属于产品。 我的环回/cli版本是1.27.0 user.repository.tsLoopbackjs 环回4包括嵌套关系,loopbackjs,loopback4,Loopbackjs,Loopback4,最近,环回团队增加了对嵌套关系包含的支持。参考 但它没有覆盖RESTAPI url以获取嵌套关系。这就是我尝试过的 我有三种型号的用户,手推车,产品。用户有很多推车,推车属于产品。 我的环回/cli版本是1.27.0 user.repository.ts constructor( @inject('datasources.farm') dataSource: FarmDataSource, @repository.getter('CartRepository') protected c
constructor(
@inject('datasources.farm') dataSource: FarmDataSource, @repository.getter('CartRepository') protected cartRepositoryGetter: Getter<CartRepository>,
) {
super(Users, dataSource);
this.carts = this.createHasManyRepositoryFactoryFor('carts', cartRepositoryGetter,);
this.registerInclusionResolver('carts', this.carts.inclusionResolver);
}
constructor(
@inject('datasources.farm') dataSource: FarmDataSource, @repository.getter('UsersRepository') protected usersRepositoryGetter: Getter<UsersRepository>, @repository.getter('ProductRepository') protected productRepositoryGetter: Getter<ProductRepository>,
) {
super(Cart, dataSource);
this.product = this.createBelongsToAccessorFor('product_id', productRepositoryGetter);
this.registerInclusionResolver('product', this.product.inclusionResolver);
this.users = this.createBelongsToAccessorFor('user_id', usersRepositoryGetter);
this.registerInclusionResolver('users', this.users.inclusionResolver);
}
}
constructor(
@inject('datasources.farm') dataSource: FarmDataSource, @repository.getter('PurchaseRepository') protected purchaseRepositoryGetter: Getter<PurchaseRepository>, @repository.getter('StockRepository') protected stockRepositoryGetter: Getter<StockRepository>, ) {
super(Product, dataSource);
this.registerInclusionResolver('stocks', this.stocks.inclusionResolver);
this.registerInclusionResolver('purchases', this.purchases.inclusionResolver);
}
cart.repository.ts
constructor(
@inject('datasources.farm') dataSource: FarmDataSource, @repository.getter('CartRepository') protected cartRepositoryGetter: Getter<CartRepository>,
) {
super(Users, dataSource);
this.carts = this.createHasManyRepositoryFactoryFor('carts', cartRepositoryGetter,);
this.registerInclusionResolver('carts', this.carts.inclusionResolver);
}
constructor(
@inject('datasources.farm') dataSource: FarmDataSource, @repository.getter('UsersRepository') protected usersRepositoryGetter: Getter<UsersRepository>, @repository.getter('ProductRepository') protected productRepositoryGetter: Getter<ProductRepository>,
) {
super(Cart, dataSource);
this.product = this.createBelongsToAccessorFor('product_id', productRepositoryGetter);
this.registerInclusionResolver('product', this.product.inclusionResolver);
this.users = this.createBelongsToAccessorFor('user_id', usersRepositoryGetter);
this.registerInclusionResolver('users', this.users.inclusionResolver);
}
}
constructor(
@inject('datasources.farm') dataSource: FarmDataSource, @repository.getter('PurchaseRepository') protected purchaseRepositoryGetter: Getter<PurchaseRepository>, @repository.getter('StockRepository') protected stockRepositoryGetter: Getter<StockRepository>, ) {
super(Product, dataSource);
this.registerInclusionResolver('stocks', this.stocks.inclusionResolver);
this.registerInclusionResolver('purchases', this.purchases.inclusionResolver);
}
product.repository.ts
constructor(
@inject('datasources.farm') dataSource: FarmDataSource, @repository.getter('CartRepository') protected cartRepositoryGetter: Getter<CartRepository>,
) {
super(Users, dataSource);
this.carts = this.createHasManyRepositoryFactoryFor('carts', cartRepositoryGetter,);
this.registerInclusionResolver('carts', this.carts.inclusionResolver);
}
constructor(
@inject('datasources.farm') dataSource: FarmDataSource, @repository.getter('UsersRepository') protected usersRepositoryGetter: Getter<UsersRepository>, @repository.getter('ProductRepository') protected productRepositoryGetter: Getter<ProductRepository>,
) {
super(Cart, dataSource);
this.product = this.createBelongsToAccessorFor('product_id', productRepositoryGetter);
this.registerInclusionResolver('product', this.product.inclusionResolver);
this.users = this.createBelongsToAccessorFor('user_id', usersRepositoryGetter);
this.registerInclusionResolver('users', this.users.inclusionResolver);
}
}
constructor(
@inject('datasources.farm') dataSource: FarmDataSource, @repository.getter('PurchaseRepository') protected purchaseRepositoryGetter: Getter<PurchaseRepository>, @repository.getter('StockRepository') protected stockRepositoryGetter: Getter<StockRepository>, ) {
super(Product, dataSource);
this.registerInclusionResolver('stocks', this.stocks.inclusionResolver);
this.registerInclusionResolver('purchases', this.purchases.inclusionResolver);
}
提前感谢我已经成功实现了与MySQL的关系作为数据源。文档确实分享了使用非关系数据库会产生意外行为的信息。如果这是你的情况,那么你应该检查他们的进展 我们的示例模型将是问题源和响应目标。问题与回答有许多关系 配置模型以处理关系,一次一个关系 您应该使用@hasMany decorator将一个新属性添加到您的问题模型中,该属性将如下所示 @hasMany=>Response,{keyTo:'question_id',name:'responses'} 回应?:回应[] 请注意,keyTo是允许关系工作的外键,name只是关系的名称 如果尚未定义外键属性,请在问题模型中添加该属性。可以使用常规的@property装饰器或类似的工具来完成 @belongsTo=>Question,{name:'Question',keyTo:'Question_id'} 问题_id?:编号 在源模型存储库问题中,您需要提供对目标模型响应的访问,类似于以下内容:
export class QuestionRepository extends DefaultCrudRepository<
Question,
typeof Question.prototype.question_id,
QuestionRelations
> {
public readonly responses: HasManyRepositoryFactory<
Response,
typeof Question.prototype.question_id
>;
constructor (
@inject('datasources.myDB') dataSource: MyDBDataSource,
@repository.getter('ResponseRepository') responseRepository: Getter<ResponseRepository>,
) {
super(Question, dataSource);
this.responses = this.createHasManyRepositoryFactoryFor(
'responses',
responseRepository
);
this.registerInclusionResolver('responses', this.responses.inclusionResolver);
}
}
我已经成功地实现了与MySQL作为数据源的关系。文档确实分享了使用非关系数据库会产生意外行为的信息。如果这是你的情况,那么你应该检查他们的进展 我们的示例模型将是问题源和响应目标。问题与回答有许多关系 配置模型以处理关系,一次一个关系 您应该使用@hasMany decorator将一个新属性添加到您的问题模型中,该属性将如下所示 @hasMany=>Response,{keyTo:'question_id',name:'responses'} 回应?:回应[] 请注意,keyTo是允许关系工作的外键,name只是关系的名称 如果尚未定义外键属性,请在问题模型中添加该属性。可以使用常规的@property装饰器或类似的工具来完成 @belongsTo=>Question,{name:'Question',keyTo:'Question_id'} 问题_id?:编号 在源模型存储库问题中,您需要提供对目标模型响应的访问,类似于以下内容:
export class QuestionRepository extends DefaultCrudRepository<
Question,
typeof Question.prototype.question_id,
QuestionRelations
> {
public readonly responses: HasManyRepositoryFactory<
Response,
typeof Question.prototype.question_id
>;
constructor (
@inject('datasources.myDB') dataSource: MyDBDataSource,
@repository.getter('ResponseRepository') responseRepository: Getter<ResponseRepository>,
) {
super(Question, dataSource);
this.responses = this.createHasManyRepositoryFactoryFor(
'responses',
responseRepository
);
this.registerInclusionResolver('responses', this.responses.inclusionResolver);
}
}