小编Kev*_*ing的帖子

Angular 6 - 为什么使用@ngrx/store而不是服务注入

我最近在@ngrx/store学习Angular 6,而其中一个教程是使用@ngrx/store进行状态管理,但我不明白在场景后面使用@ngrx/store的好处.

例如,对于简单的登录和注册操作,以前通过使用该服务(让我们称之为AuthService),我们可以使用它来调用后端api,在AuthService中存储"userInfo"或"token",将用户重定向到"HOME"在我们需要通过使用DI获取userInfo的任何组件中注入AuthService,只需要一个文件AuthService处理所有内容.

现在,如果我们使用@ngrx/store,我们需要定义Action/State/Reducer/Effects/Selector,它可能需要写入4或5个文件来处理上述动作或事件,然后有时我们还需要调用backend api使用服务,这看起来要复杂多余......

在其他一些场景中,我甚至看到一些页面使用@ngrx/store来存储对象或对象列表,如网格数据.,是对某种内存存储使用情况的?

回到这个问题,为什么我们在Angular项目中使用@ngrx/store而不是服务注册存储? 我知道这是用于" 国家管理 "的用法,但究竟什么是"国家管理"?这是什么类似事务日志,我们什么时候需要它?我们为什么要在前端管理它?请随时在@ngrx /商店区分享您的建议或经验!

state-management ngrx-store angular5 angular6

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

如何从 Azure 服务总线队列中删除/清除活动/死信消息?

是否有办法从 Azure 门户中的 Azure 服务总线队列中删除/清除活动/死信消息?目前,我们已经向队列发送了几条消息,而活动消息和一些死信消息都毫无意义地保留在那里,并且我们的服务总线订阅者没有以某种方式触发,因此我们想删除这些消息以使我们的队列又干净了。为了等到服务总线在过期后删除这些消息,我们可以自己手动删除它们吗?

azure azureservicebus azure-servicebus-queues

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

使用 Java 函数而不是普通方法的好处?

Java 8 中引入了函数接口,用于在 Java 中实现函数式编程。它代表一个函数,它接受一个参数并产生一个结果。它易于练习和阅读,但我仍在努力了解它的好处,而不仅仅是让它看起来很酷。例如,

Function<Integer, Double> half = a -> a / 2.0;
Function<Double, Double> triple = b -> b * 3;
double result = half.andThen(triple).apply(8);
Run Code Online (Sandbox Code Playgroud)

可以转换为标准方法,如

private Double half(int a) {
    return a / 2.0;
}
private Double triple (int b) {
    return b * 3;
}
double result = triple(half(8));
Run Code Online (Sandbox Code Playgroud)

那么使用Function有什么好处呢?既然提到了函数式编程,那么 Java 中的函数式编程究竟是什么以及它可以带来的好处呢?它会不会像这样受益:

  1. 链接的执行一起函数(例如andThen & compose)
  2. Java内部使用 Stream
  3. 访问修饰符的功能趋于私人不公开的定义,而方法可以是?

基本上,我很想知道,在什么情况下我们更喜欢使用函数而不是普通方法?是否有无法或难以使用的用例,或使用正常方法转换的用例?

java java-8

15
推荐指数
2
解决办法
1742
查看次数

无法检索项目元数据.确保它是基于MSBuild的.NET Core项目

我一直在网上研究很多,但没有找到合适的解决方案.我试图通过使用数据库优先的脚手架方法来映射表模型,同时在应用命令时始终收到此错误,从而使用Entity Framework Core和MySQL

Unable to retrieve project metadata. Ensure it's an MSBuild-based .NET Core project. If you're using custom BaseIntermediateOutputPath or MSBuildProjectExtensionsPath values, Use the --msbuildprojectextensionspath option.
Run Code Online (Sandbox Code Playgroud)

这是我用来搭建数据库模型的命令:

Scaffold-DbContext "server=localhost;port=3306;user=root;password=1234;database=world" "Pomelo.EntityFrameworkCore.MySql" -OutputDir .\Models -f
Run Code Online (Sandbox Code Playgroud)

这是我的.Net Core项目设置:

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.1" />
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.1" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

mysql entity-framework ef-database-first asp.net-core-2.0 entity-framework-core-2.1

13
推荐指数
2
解决办法
3162
查看次数

Java 流 - 将 int 数组映射并存储到 Set 中

我有一个 的数组[5, 6, 7, 3, 9],我想将数组中的每个元素减去 2,然后将其存储在 a 中Set,所以我所做的是

Set<Integer> mySet = Arrays.stream(arr1).map(ele -> new Integer(ele - 2)).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

但我在这里有两个例外

  1. The method collect(Supplier<R>, ObjIntConsumer<R>, BiConsumer<R,R>) in the type IntStream is not applicable for the arguments (Collector<Object,?,Set<Object>>)
  2. Type mismatch: cannot convert from Collector<Object,capture#1-of ?,Set<Object>> to Supplier<R>

这些错误是什么意思,我如何通过Java Stream操作解决这里的问题?

java collections java-stream

8
推荐指数
2
解决办法
154
查看次数

Entity Framework Core Linq 查询过滤相关实体

我一直在弄清楚如何在使用 Include 时通过 Entity Framework Core 编写关于过滤相关实体的查询,假设我有以下两个类:

public class Order
{
  public int OrderId {get; set;}
  public String CreatedBy{get; set;}
  public virtual Collection<OrderDetail> OrderDetails { get; set; } = new Collection<OrderDetail>();
}

public class OrderDetail
{
   public Int64? OrderDetailID { get; set; }
   public Int64? OrderID { get; set; }
   public string ProductName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我想查找由“Jason”创建的所有订单,并且哪个订单详细信息的产品名称等于“Apple”,则在 sql 中它会是:隐藏复制代码

SELECT *
FROM Orders O
INNER JOIN OrderDetail OD ON O.OrderId = OD.OrderId
WHERE O.CreationUser = 'Jason' …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core

5
推荐指数
1
解决办法
3306
查看次数

如何配置服务总线功能 2.x 的最大重试次数?

默认情况下,Azure 服务总线队列绑定函数的重试计数为 10,是否可以在 host.json 或 local.settings.json 文件中自定义此值?我读过有关微软的文档,其中引入了四个变量(prefetchCount、autoComplete、maxConcurrentCalls、maxAutoRenewDuration),但它们都不是我需要的,此外,这些都是我们可以为服务总线绑定功能配置的设置吗?我们可以有像最大重试、重试间隔、规模计数之类的东西吗?

azure azure-servicebus-queues azure-functions

4
推荐指数
1
解决办法
1574
查看次数

.Net Core - 从API中间件到存储库层注入依赖关系IUserInfo

假设我从下到上有以下结构化项目层,如Repository - > Service - > API,Code sample:

库:

public interface IUserInfo
{
    int UID{ get; set; }
}
public class UserInfo : IUserInfo
{
    public int UID { get; set; }
}
public class ProductionRepository : Repository, IProductionRepository {
    public ProductionRepository(IUserInfo userInfo, StoreDbContext dbContext) : base(userInfo, dbContext)
    {}
    //...
}
Run Code Online (Sandbox Code Playgroud)

服务:

public class ProductionService : Service, IProductionService {
        public ProductionService(IUserInfo userInfo, StoreDbContext dbContext)
            : base(userInfo, dbContext)
        {
        }
//...
}
public abstract class Service {        
    protected IProductionRepository …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection repository-pattern asp.net-core asp.net-core-webapi

3
推荐指数
1
解决办法
1130
查看次数

使用 Rxjs 6 在 Angular 6 中返回一个空/空的 Observable

我正在使用 Rxjs 6处理Angular 6,同时我有一个关于如果响应失败或有异常返回空/空 Observable 的问题,这是我的假设,我的远程 api 将返回一个IOptionResponse对象,它包含一个消息字符串,可以被指示为“成功”或“失败”,它还包含一个模型,它是一个“IOption”对象数组

export interface IOptionResponse {
    message: string;
    model: IOption[];
}
Run Code Online (Sandbox Code Playgroud)

这是我的服务方法名称,它将返回一个 IOption 数组的 Observable,它是我的远程 API 结果的“模型”

loadIOptionMembersRelationship(): Observable<IOption[]> {
    return this.httpClient.get<IOptionResponse>('${environment.apiUrl}/api/member/XXX')
        .map(
            (response) => {
                console.log(response);
                // if response.message is success, return IOption[] model
                if (response.message == responseMessage.Success) {
                    return response.model;
                }
                else {
                    // return Observable.empty<IOption[]>(); failed
                    // return new Observable.empty<IOption[]>(); failed
                    // return new EmptyObservable<IOption[]>(); failed
                    // return new Observable<IOption[]>.from([]); failed
                    // Otherwise …
Run Code Online (Sandbox Code Playgroud)

rxjs typescript angular6 rxjs6

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

如何捕获UI组件中的效果触发的ngrx动作?

我是ngrx状态管理的新手,我正在使用@ ngrx / store6.0.1的效果,假设我想保存一个新的成员联系人,所以我已经做好了以下准备:

  • 成员效应

    @Effect()
    memberContactCreate$ = this.actions$.pipe(
        ofType(MemberActions.MemberActionTypes.MemberContactCreate),
        switchMap((action: MemberActions.MemberContactCreate) => {
            return this.memberService.createMemberDetail(action.payload);
        }),
        map(
            (response) => {
                console.log('MemberContactCreate$ MemberContactCreate response: ', response);
                if (!response.didError) {
                    return new MemberActions.MemberContactCreateSuccess(response.model as MemberDetailResponse);
                } else {
                    return new MemberActions.MemberContactCreateFailure(response.errorMessage);
                }
            },
        ),
    );
    
    Run Code Online (Sandbox Code Playgroud)
  • 在我的成员联系组件提交中,我将调度创建动作

    this.store.dispatch(new fromAction.MemberContactCreate(<MemberDetailRequest>this.memberDetailForm.value));

但是,我想显示一个敬酒或通知,如果我的成员从服务器成功创建(在我的@Effect方法中定义),则返回新动作“ MemberActions.MemberContactCreateSuccess ”,但是我如何才能在我的组件中捕获此动作呢?马上被发射?我试图做下面的事情并将其放在我的ngOnInit中,并认为它可以像订阅一样使用,但事实并非如此,实际上它每次都像页面加载一样触发,甚至我没有调度我的memberContactCreate操作...

this.store.select(fromSelector.getMemberCreateSuccess)
      .subscribe((stateSelector) => {
        console.log('getMemberCreateSuccess: ', stateSelector);
        setTimeout(() => {
          this.toastr('Hooray',
            'New contact has been created successfully!');
        }, …
Run Code Online (Sandbox Code Playgroud)

ngrx ngrx-effects ngrx-store angular5 angular6

3
推荐指数
1
解决办法
1413
查看次数