小编Seb*_*rek的帖子

节点如果不存在,如何创建目录?

如果目录不存在,这是创建目录的正确方法吗?它应具有脚本的完全权限,并且可由其他人读取.

var dir = __dirname + '/upload';
if (!path.existsSync(dir)) {
    fs.mkdirSync(dir, 0744);
}
Run Code Online (Sandbox Code Playgroud)

node.js

541
推荐指数
15
解决办法
39万
查看次数

DatePipe 没有提供程序

我尝试在我的服务中使用 DatePipe,如下所示:

import { Injectable } from '@angular/core';
import { DatePipe } from '@angular/common';
import { TranslateService } from '@ngx-translate/core';

@Injectable({
   providedIn: 'root',
})
export class BaseService {

    public items = [];
    constructor(
        protected datePipe: DatePipe,
        protected translateService: TranslateService
    ) { }
}
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:NullInjectorError: No provider for DatePipe!". 原因是什么?

typescript angular

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

使用继电器时如何处理本地状态?

我正在研究基于反应/中继的内容管理系统.用户可以创建和修改存储在服务器上的文章.在将文章保存到服务器之前,我想知道最好的方法是处理文章的修改状态.我可以想到几种不同的方法来解决这个问题:

1)不受控制的输入

我可以使用填充输入元素,defaultValue而不是显式地存储状态.DOM将用作修改数据的商店.一旦用户点击"保存",我收集所有字段,读取值并创建变异.

优点:

  • 没有当地的国家处理

魂斗罗:

  • 我不知道哪些字段已更改,需要通过突变发送所有数据.或者需要一些额外的逻辑来创建差异
  • 无法更新视图的其他部分以响应状态更改

2)在本地复制:

我可以将修改后的文章保留在react组件的本地状态,并使用受控输入字段来保持同步.

优点:

  • 本地州只能改变字段,因此差异很容易
  • UI的其他部分可以响应本地状态的变化

魂斗罗:

  • 这似乎是一种反模式,因为视图中的数据不是直接来自中继.本地状态和中继道具之间的同步可能是错误的来源

3)服务器是新的本地:

只需为每个单独的更改创建一个变异.使用乐观更新,这也应该提供良好的用户体验.

优点:

  • 中继是数据真实的唯一来源
  • 状态是在服务器端保存的,因此如果用户意外关闭浏览器,则会有备份

魂斗罗:

  • 这需要在服务器端实现更复杂的实现,以处理用户想要丢弃草稿等的情况.
  • 引发了许多突变

这三种方法可以解决我想到的问题,但也许有更好的方法可以解决这个问题.

我已经看到有很多关于如何使用Relay处理本地状态的讨论,并且可能会有一个内置的解决方案,其中包含Relay的未来版本,但是我需要一个适用于当前版本的解决方案的解决方案中继.

javascript reactjs relayjs

25
推荐指数
1
解决办法
1264
查看次数

如何使用spring boot和spring数据访问实体管理器

当我们使用spring boot和spring数据时,如何访问存储库中的实体管理器?

否则,我需要将我的大查询放在注释中,我宁愿有一些清楚的东西......然后是长文本.

spring-data spring-data-jpa spring-boot

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

使用相同 REST 资源的多种身份验证方法

假设您正在构建 REST API,这些 API 可以从不同类型的消费者(人类用户、事物、不受信任的本机应用程序)访问,因此每个人都有自己的身份验证方法,用于技术或“历史”决策。

例如,用户将 JWT 与某些声明模型结合使用,而本机应用程序则通过 Oauth2 流进行授权并使用 OAuth 令牌。虽然两者都希望访问相同的端点,因此应用程序需要区分不同模型的身份验证信息并将它们路由到适当的服务

添加 HTTP 标头“X-Auth-Method”并在每个传入请求时检查它很容易,但我问自己它是否足够 RESTful,最重要的是,会给第三方消费者带来一个问题:想要集成他们的软件并且必须了解/实现某种特定于供应商的行为。

另一种解决方案是提供不同的根端点

  • api.myapp.com/v1/userapi
  • api.myapp.com/v1/clientapi

然后让 API 网关将请求路由到适当的身份验证服务验证步骤,但实际上两者都公开完全相同的 API。

以 RESTful 方式并意识到构建开放生态系统时出现的所有问题,什么会更正确?

authentication rest api-design http

6
推荐指数
0
解决办法
1261
查看次数

Jasmine:Angular Typescript 项目中的“不完整:未找到规范”

出于某种原因,我无法理解,Karma 说 Jasmine 找不到我的任何测试规范。我正在使用 Angular 9、Typescript 并ng test运行测试。我还跑去jasmine init创建 jasmine.json 配置文件。我尝试了几次配置更改,创建了一个虚拟测试 javascript 文件等等,但我仍然收到相同的“未找到规格”消息。这真的很令人沮丧,我敢肯定我只是在这里忽略了一些明显的东西。

测试文件夹结构:

spec
    services
        address.service.spec.ts
        login.service.spec.ts
        ...
     support
         jasmine.json
Run Code Online (Sandbox Code Playgroud)

茉莉花.json:

{
  "spec_dir": "spec",
  "spec_files": [
  "**/*[sS]pec.js", // tried with "**/*[sS]pec.ts"
  "services/*[sS]pec.js" // tried with "services/*[sS]pec.ts"
  ],
  "helpers": [
  "helpers/**/*.js" // tried with "helpers/**/*.ts"
  ],
  "stopSpecOnExpectationFailure": false,
  "random": false
}
Run Code Online (Sandbox Code Playgroud)

业力.conf.js :

// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html

module.exports = function(config) {
    config.set({
        basePath: '',
        frameworks: ['jasmine', '@angular-devkit/build-angular'],
        plugins: [ …
Run Code Online (Sandbox Code Playgroud)

testing jasmine typescript karma-runner angular

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

如何使用扩展运算符更改对象的嵌套属性?

这是我的情况的干净版本:

const person1 = {
    name: "Person1 Name",
    hairColor: "Brown",

    backpack: {
        color: "Army-Green",
        content: [
            "item1",
            "item2",
            "..."
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

我想只改变背包的颜色

我已经在下面尝试过这段代码,但没有成功:

person = {...person1, backpack.color: "New backpack color"}};

person = {...person1, backpack: {...backpack, color: "New backpack color"}};

person = {...person1, backpack: {color: "New backpack color"}};

person = {...person1, backpack = {...backpack, color: "New backpack color"}};
Run Code Online (Sandbox Code Playgroud)

javascript javascript-objects ecmascript-6

5
推荐指数
2
解决办法
1542
查看次数

不可编辑的内容允许删除。怎么限制这个呢?

我们使用了带有“不可编辑”插件的 TinyMCE 编辑器。我们试图删除不可编辑的内容,它被删除了。如何限制不可编辑内容的删除(删除/退格)操作?

下面是我的代码:

tinymce.init({
  selector: "#myeditablediv",
  plugins: "advlist table lists image paste link pagebreak noneditable help",
  noneditable_noneditable_class: "mceNonEditable",
  menubar: false,
  inline: true,
  height: 500,
  paste_data_images: true,
  toolbar_sticky: true,
  toolbar:
    "bold italic underline | superscript subscript | formatselect | bullist | code pagebreak | link image | COC | table | removeformat | help",
  formats: {
    editable: {
      inline: "span",
      styles: { borderBottom: "2px solid gray" },
      classes: "mceEditable"
    }
  },
  setup: function (editor) {
    editor.ui.registry.addButton("COC", {
      text: "<b style='font-size:large;font-weight:bold;'>{CC}</b>", …
Run Code Online (Sandbox Code Playgroud)

javascript tinymce

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

Android LinearSnapHelper - 如何提高滚动/"捕捉"速度?

我正在使用LinearSnapHelper将我的RecyclerView中的项目"捕捉"到屏幕上"卡住"(我的卡占据了大部分屏幕,因此我希望它们能够卡入到位并在每次滑动/滚动/滚动时填充屏幕) .

我正在努力解决如何让卡片更快地卡入到位的问题.我已经尝试创建自定义LinearLayoutManager(并在scrollToPosition或smoothScrollToPosition中编辑calculateSpeedPerPixel方法),以及自定义RecyclerView(并编辑fling方法).但没有什么能影响卡片"卡入"的速度.

我想问题是我并不真正理解LinearSnapHelper如何将卡片"滚动"到位.它似乎没有使用LinearLayoutManager的scrollToPosition或smoothScrollToPosition方法.

有帮助吗?非常感谢!

    snapHelper = new LinearSnapHelper() {
        @Override
        public int findTargetSnapPosition(RecyclerView.LayoutManager layoutManager, int velocityX, int velocityY) {
            View centerView = findSnapView(layoutManager);
            if (centerView == null) {
                return RecyclerView.NO_POSITION;
            }

            int position = layoutManager.getPosition(centerView);
            int targetPosition = -1;
            if (layoutManager.canScrollHorizontally()) {
                if (velocityX < 0) {
                    targetPosition = position - 1;
                } else {
                    targetPosition = position + 1;
                }
            }

            if (layoutManager.canScrollVertically()) {
                if (velocityY > 0) {
                    targetPosition = position + 1;
                } else …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview linearlayoutmanager

4
推荐指数
2
解决办法
5236
查看次数

如何获取grafana查询的实例总和

在我的 grafana 中,我正在跟踪节点导出器和进程导出器的运行实例。因为我已经使用了查询

namedprocess_namegroup_context_switches_total{ctxswitchtype="voluntary"}
Run Code Online (Sandbox Code Playgroud)

对于此查询,我正在获取节点导出器和进程导出器的多个进程运行实例。例如,对于上面的查询,我得到的结果如下:

namedprocess_namegroup_context_switches_total{ctxswitchtype="voluntary",groupname="processexporter",job="processexporter"} 45678
namedprocess_namegroup_context_switches_total{ctxswitchtype="voluntary",groupname="processexporter",job="processexporter"} 98767
namedprocess_namegroup_context_switches_total{ctxswitchtype="voluntary",groupname="nodeexporter",job="nodeexporter"} 64835
namedprocess_namegroup_context_switches_total{ctxswitchtype="voluntary",groupname="nodeexporter",job="nodeexporter"} 36217
Run Code Online (Sandbox Code Playgroud)

我想更改查询以显示运行实例的总和,例如,

namedprocess_namegroup_context_switches_total{ctxswitchtype="voluntary",groupname="processexporter",job="processexporter"} 144445
namedprocess_namegroup_context_switches_total{ctxswitchtype="voluntary",groupname="nodeexporter",job="nodeexporter"} 101052 
Run Code Online (Sandbox Code Playgroud)

请帮助我如何实现运行实例的总和值

grafana prometheus

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