小编Bla*_*mba的帖子

如何对数组或函数使用可选链接?

我正在尝试将可选链接与数组而不是对象一起使用,但不确定如何执行此操作:

这就是我想要做的myArray.filter(x => x.testKey === myTestKey)?[0]。还用一个函数尝试类似的事情:

let x = {a: () => {}, b: null}
console.log(x?b());
Run Code Online (Sandbox Code Playgroud)

但是它给出了这样的错误,所以如何将它与数组或函数一起使用。

javascript arrays function typescript optional-chaining

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

如何在Angular拦截器内向请求体添加内容?

在这里我可以修改标题,因为有关于此功能的多个教程,但是:

@Injectable()
export class MyFirstInterceptor implements HttpInterceptor {

    constructor(private currentUserService: CurrentUserService) { }

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        console.log(JSON.stringify(req));

        const token: string = this.currentUserService.token;

        if (token) {
            req = req.clone({ headers: req.headers.set('Authorization', 'Bearer ' + token) });
        }

        if (!req.headers.has('Content-Type')) {
            req = req.clone({ headers: req.headers.set('Content-Type', 'application/json') });
        }

        req = req.clone({ headers: req.headers.set('Accept', 'application/json') });
        return next.handle(req);
    }
}
Run Code Online (Sandbox Code Playgroud)

但在我的情况下,有一个令牌,我需要添加请求正文而不是请求标题,所以有任何方法来修改正文.

更新:Mild Fuzz的方法适用于简单的帖子请求,但我想添加查询,如果它是GET请求和正文,如果它允许添加正文.最重要的是,当我尝试发送表单数据时它就破了....request.body删除表单数据并将其转换为JSON对象,以便我的图像消失.

javascript api interceptor angular

12
推荐指数
2
解决办法
3462
查看次数

如何使用 swagger 实现 google recaptcha

我已经使用This 包装器在 lumen 中创建了 Rest API ,我在网络面板上使用了 google 隐藏的 reCaptcha,但我想知道是否也可以在 swagger 上实现它?

swagger swagger-ui swagger-2.0

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

在向用户显示输出时准确测量Javascript函数的性能

如下面的代码所示,当我增加字符串的大小时,它导致0毫秒的差异。此外,随着字符串数的增加,存在不一致的情况。

我在这里做错什么了吗?

let stringIn = document.getElementById('str');
let button = document.querySelector('button');

button.addEventListener('click', () => {
  let t1 = performance.now();
  functionToTest(stringIn.value);
  let t2 = performance.now();
  console.log(`time taken is ${t2 - t1}`);
});

function functionToTest(str) {
  let total = 0;
  for(i of str) {
   total ++;
  }
  return total;
}
Run Code Online (Sandbox Code Playgroud)
<input id="str">
<button type="button">Test string</button>
Run Code Online (Sandbox Code Playgroud)

我也尝试使用await,但结果是相同的(请参见下面的代码段)。包含以下代码的函数是async

let stringArr = this.inputString.split(' ');
let longest = '';
const t1 = performance.now();
let length = await new Promise(resolve => {
  stringArr.map((item, i) …
Run Code Online (Sandbox Code Playgroud)

javascript performance performance-testing node.js

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

使用外部API调用更新angular Universal中的元标签

我花了两个多月的时间,但找不到如何进行角度通用的清晰解决方案。我已经花了大约6个月的时间来在一个项目上实施angular Universal,而我却花了很多时间,但现在我仍然坚持这个问题。任何人都可以帮我这个忙,因为全世界似乎都想知道Angular SSR的解决方案。

这是我的代码(元标记服务):

import {Injectable} from '@angular/core';
import { Meta, Title } from '@angular/platform-browser';
import {commonMetas} from './meta-data.model';

@Injectable()
export class SeoService {
    public commonMetas = commonMetas;
    constructor(public meta: Meta, public title: Title) {}

    setAutomatically (key = 'none') {
        const detail = this.commonMetas[key];
        /** setting defaults */
        this.setTitle(detail.title);
        this.setAuthor();
        this.setDescription(detail.description);
        this.setKeywords(detail.keyword);
    }
    setFromJson(key: {
        title: any,
        description: any,
        image: any,
        keyword: any,
        author: any
    }) {
        key.title = key.title ? key.title : this.commonMetas['none'].title;
        key.description = key.description ? key.description : …
Run Code Online (Sandbox Code Playgroud)

seo meta-tags angular-universal ssr angular

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

在Rshiny中显示逗号和条件突出显示 - 不兼容

我有一个Shiny应用程序渲染数据表,我希望在其中包含2个条件格式化功能

  1. 将逗号添加到大于1000的数字
  2. 当第2列中的值列2值> = 1.3x时,将蓝色背景应用于第2列值.当第2列值为第1列中的<= .7x值时应用红色背景.

我问了一个关于如何在这篇SO帖子中加入逗号的问题.我在下面的脚本中删除了rowcallback参数,逗号正确呈现.同样,如果我注释掉dom和formatCurrency参数,突出显示条件fomatting也会正确呈现.

  js_cont_var_lookup <- reactive({
  JS(
      'function(nRow, aData) {
      for (i=2; i < 3; i++) {
      if (parseFloat(aData[i]) > aData[1]*(1.03)) {
        $("td:eq(" + i + ")", nRow).css("background-color", "aqua");
         }
        }
       for (i=2; i < 3; i++) {
       if (parseFloat(aData[i]) < aData[1]*(.7)) {
        $("td:eq(" + i + ")", nRow).css("background-color", "red");
         }
        }
       }'
      ) # close JS
})

shinyApp(
  ui = fluidPage(
    DTOutput("dummy_data_table")
  ),
  server = function(input, output) {
    output$dummy_data_table <- DT::renderDataTable(
      data.frame(A=c(100000, 200000, …
Run Code Online (Sandbox Code Playgroud)

javascript r shiny

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

如何从角度通用构建中删除 sourceMappingURL?

我正在使用这个 repo 作为基础。我已经解决了几乎所有其他插件的错误,但我无法解决这个错误。

在进行 SSR 构建时,没有其他插件需要 .map 文件,因为它是生产版本。但我不知道它是从哪里爬进来的。

这是导致错误的行。在server.js文件中。

margin: -1px 0; }\n\n/*# sourceMappingURL=swiper.component.css.map
Run Code Online (Sandbox Code Playgroud)

我不想每次进行构建时都手动删除它,因此如何解决问题以及问题可能是什么。

错误 出了点问题,请稍后再试!错误 { 错误:未捕获(承诺):错误:无法匹配任何路由。URL 段:'swiper.component.css.map' 错误:无法匹配任何路由。URL 段:CatchSubscriber.selector (E:\xampp\htdocs\havemybooks\ dist\server.js:146195:29) 在 CatchSubscriber.error (E:\xampp\htdocs\havemybooks\dist\server.js:29486:31) 在 MapSubscriber.Subscriber._error (E:\xampp\htdocs\havemybooks\ dist\server.js:20931:26)

更新:

我发现罪魁祸首是具有内联的插件/*# sourceMappingURL=swiper.component.css.map */ 所以是否有 webpack 配置来替换已经存在的内联源映射。

我尝试--devtool false使用 webpack 但没有成功

javascript server-side-rendering angular-universal angular

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

Node.JS 验证 Google 身份验证令牌

我正在尝试使用 Express.JS 框架构建一个 Node.JS REST 服务器,该框架为移动应用程序集成了 Google 身份验证。使用的 Node.JS 版本是 0.12.7。

我在验证从应用程序收到的 Google 令牌时遇到问题,因为我尝试加载的模块似乎返回了错误。

用于验证此令牌的模块是passport-google-token。用于初始化该模块和检查令牌的代码如下:

index.js 文件

'use strict';

import express from 'express';
import passport from 'passport';
import {setTokenCookie} from '../../auth.service';

var router = express.Router();

router
  .post('/callback', passport.authenticate('google-token'), setTokenCookie);

export default router;
Run Code Online (Sandbox Code Playgroud)

护照.js文件

import passport from 'passport';
import GoogleTokenStrategy from 'passport-google-token';

export function setup(User, config) {
  passport.use(new GoogleTokenStrategy({
    clientID: config.google.clientID,
    clientSecret: config.google.clientSecret
  },
  function(accessToken, refreshToken, profile, done) {
    User.findOne({'google.id': profile.id}).exec()
      .then(user => {
        if (user) {
          console.log(user);
          return …
Run Code Online (Sandbox Code Playgroud)

google-authentication node.js access-token express passport.js

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