我最近在@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 /商店区分享您的建议或经验!
是否有办法从 Azure 门户中的 Azure 服务总线队列中删除/清除活动/死信消息?目前,我们已经向队列发送了几条消息,而活动消息和一些死信消息都毫无意义地保留在那里,并且我们的服务总线订阅者没有以某种方式触发,因此我们想删除这些消息以使我们的队列又干净了。为了等到服务总线在过期后删除这些消息,我们可以自己手动删除它们吗?
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 中的函数式编程究竟是什么以及它可以带来的好处呢?它会不会像这样受益:
Stream?基本上,我很想知道,在什么情况下我们更喜欢使用函数而不是普通方法?是否有无法或难以使用的用例,或使用正常方法转换的用例?
我一直在网上研究很多,但没有找到合适的解决方案.我试图通过使用数据库优先的脚手架方法来映射表模型,同时在应用命令时始终收到此错误,从而使用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
我有一个 的数组[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)
但我在这里有两个例外
The method collect(Supplier<R>, ObjIntConsumer<R>, BiConsumer<R,R>) in the type IntStream is not applicable for the arguments (Collector<Object,?,Set<Object>>)”Type mismatch: cannot convert from Collector<Object,capture#1-of ?,Set<Object>> to Supplier<R>这些错误是什么意思,我如何通过Java Stream操作解决这里的问题?
我一直在弄清楚如何在使用 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) 默认情况下,Azure 服务总线队列绑定函数的重试计数为 10,是否可以在 host.json 或 local.settings.json 文件中自定义此值?我读过有关微软的文档,其中引入了四个变量(prefetchCount、autoComplete、maxConcurrentCalls、maxAutoRenewDuration),但它们都不是我需要的,此外,这些都是我们可以为服务总线绑定功能配置的设置吗?我们可以有像最大重试、重试间隔、规模计数之类的东西吗?
假设我从下到上有以下结构化项目层,如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
我正在使用 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) 我是ngrx状态管理的新手,我正在使用@ ngrx / store和6.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) angular6 ×3
angular5 ×2
azure ×2
c# ×2
java ×2
ngrx-store ×2
asp.net-core ×1
collections ×1
java-8 ×1
java-stream ×1
mysql ×1
ngrx ×1
ngrx-effects ×1
rxjs ×1
rxjs6 ×1
typescript ×1