小编Ema*_*avi的帖子

是的,使用匹配问题使用正则表达式进行验证

所以我使用Yup进行了以下验证:

const myValidtion = yup
.string()
.trim()
.matches(/[abcdefghijklmnopqrstuvwxyz]+/ , 'Is not in correct format')
.required();
Run Code Online (Sandbox Code Playgroud)

所以有了这个,这将通过:hello world正如预期的那样。但让我感到困惑的是为什么这也会通过:hello WORLD或者这也会通过:hello ,&$#$ world

另一方面,如果我们只输入这样的无效字符,*%$&#$($#就不会通过并向我显示错误。正如我所看到的,如果所有条目都无效,这只会给我错误。

我正在寻找的是如何使用 Yup 匹配方法在用户输入时不通过,例如: hello ,*&) world

谁能帮我这个?

javascript validation typescript reactjs yup

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

将查询字符串作为带哈希的 url 后的对象获取

所以我有一个这种格式的网址。:

https://my-app.com/my-route/someOtherRoute#register?param1="122"&param2="333"
Run Code Online (Sandbox Code Playgroud)

我知道如何获取普通网址的查询字符串,但我无法获取后面的查询字符串#

我使用node-url到目前为止我已经这样做了:

import * as urlTool from 'url';
const url = "https://my-app.com/my-route/someOtherRoute#register?param1="122"&param2="333"
const parsedUrl = urlTool.parse(url,true);
const { pathName, hash } = parsedUrl
Run Code Online (Sandbox Code Playgroud)

所以到目前为止,我hash有这个值#register?param1="122"&param2="333",但是如何以动态方式获取查询字符串,因为查询字符串可能或可能不一直存在,而且我也不知道它们的名称,如何我可以获得#url之后可能出现的任何查询字符串吗?

javascript url url-routing node.js typescript

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

Nodejs - Express - 在 API 中处理可选查询字符串参数的最佳实践

我想制作一个有 5 个可选查询参数的 API,我想知道是否有更好的方法来处理这个问题,现在我用 if 条件检查每个参数,这有点脏!有什么方法可以在不使用大量 if 条件的情况下处理所有场景?

let songName = req.query.songName
let singerName = req.query.singerName
let albumName = req.query.albumName
let publishDate = req.query.publishDate

if(songName && singerName && albumName && publishDate) {
   const response = songs.filter(c => { 
      return c.songName === songName && c.singerName === singerName && c.albumName === albumName && c.publishDate === publishDate
   }
   res.send({
      "Data" : response
   })
}

if(songName && singerName && albumName && !publishDate) {
   const response = songs.filter(c => { 
      return c.songName === songName && …
Run Code Online (Sandbox Code Playgroud)

javascript if-statement query-parameters node.js express

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

所有设备键盘顶部的React Native Align按钮

因此,我需要Which is not at bottom om screen按设计将按钮对准屏幕的中间,但对于所有设备,它应对准键盘的顶部。

如果您查看此屏幕截图:

在此处输入图片说明

对于某些设备,我会竭力做到这一点,但在某些其他设备中,并没有真正做到:

在此处输入图片说明

我该如何管理所有这些?

这是我到目前为止所做的:

<Padding paddingVertical={isKeyboardOpen ? Spacing.unit : Spacing.small}>
<Button
      variant="solid"
      label='Next'
      style={styles.submitBtn}
    />

</Padding>
Run Code Online (Sandbox Code Playgroud)

isKeyboardOpen只是一种方法,它将基于平台(如果键盘打开)返回true来创建列表器:

 Keyboard.addListener(
  Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow',
  true 
 );
Run Code Online (Sandbox Code Playgroud)

并且submitBrn css类是:

submitBtn: {
  margin: Spacing.base,
},
Run Code Online (Sandbox Code Playgroud)

typescript react-native

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

将NODE_ENV传递给docker以运行package.json脚本

这是我的dockerfile:

FROM node:6-onbuild

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app/
RUN npm install
COPY . /usr/src/app

ENV PORT 80
EXPOSE ${PORT}

CMD [ "npm","run", "start" ]
Run Code Online (Sandbox Code Playgroud)

在package.json我有这个:

"scripts": {
  "start": "node start.js",
  "stagestart": "NODE_ENV=content-staging node start.js"
}
Run Code Online (Sandbox Code Playgroud)

start脚本是用于生产的,现在我想要一种在dockerfile中运行staging脚本的方法.有没有办法在dockerfile中读取NODE_ENV,所以我可以有一个dockerfile来处理staging和production.

amazon-web-services node.js docker dockerfile

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

跨帐户上传时如何更改S3文件所有权

我有一个将一些文件上传(复制)到另一个AWS账户中的S3存储桶中的应用程序,我使用来自AWS开发工具包(Nodejs)的copyObject命令

var params = {
      Bucket: "MyBucket_AccountB", 
      CopySource: encodeURI('/Accunt_A_Bocket/file.png'),
      Key: "file.png",
      ACL: 'bucket-owner-full-control'
     };
s3.copyObject(params, function(err, datas) {
    if (err) console.log(err, err.stack); // an error occurred
    else     console.log(datas);           // successful response
});
Run Code Online (Sandbox Code Playgroud)

假设此代码是从另一个AWS帐户运行的,AWS_ACCOUNT_A则文件上传到中的S3存储桶AWS_ACCOUNT_B情况是,当文件上传到此存储桶时,该文件的所有权仍然是AWS_ACCOUNT_A

我想知道AWS_ACCOUNT_B在上传文件时该如何赋予文件所有权。这里有人可以给我一些指导吗?

更新:

我使用了这个政策:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "Permissions",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::MY_ACCOUNT_B_ID:root"
        },
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::MYBUCKET_IN_ACCOUNT_A",
            "arn:aws:s3:::MYBUCKET_IN_ACCOUNT_A/*"
        ]
    }
]
}
Run Code Online (Sandbox Code Playgroud)

但上传的文件仍归拥有Account_A,我在政策中做错了什么吗?

amazon-s3 amazon-web-services aws-sdk s3-bucket

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

开玩笑嘲笑日期不能在其他环境中工作

所以我想在测试中模拟一个日期,这就是我所做的:

const mockDate = new Date('2018-01-01');
const backupDate = Date;

beforeEach(() => {
  (global.Date as any) = jest.fn(() => mockDate);
})

afterEach(() => {
  (global.Date as any) = backupDate;
  jest.clearAllMocks();
});



const backupDate = Date;
(global.Date as any) = jest.fn(() => mockDate);
expect(myModule).toMatchSnapshot();
(global.Date as any) = jest.fn(() => backupDate);
Run Code Online (Sandbox Code Playgroud)

因此,此测试在我的本地环境中工作正常,并且与快照匹配:

exports[`should match with date`] = `
[MockFunction] {
  "calls": Array [
    Array [
      Object {
           "myDate" : "Mon Jan 01 2018 01:00:00 GMT+0100 (Central European Standard Time)"
}]]}
Run Code Online (Sandbox Code Playgroud)

但是在生产环境中,我得到了这个,导致测试失败: …

javascript unit-testing mocking node.js jestjs

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

查找数组中最大数的总数仅对大数据失败

我做了一些 Hackerrank 挑战来提高我解决问题的能力,所以其中一个挑战是关于从一组数字中找到总的最大数字。例如,如果我们有3 2 1 3 1 3它应该返回3

这就是我所做的:

function birthdayCakeCandles(ar) {
let total= 0
let sortedArray = ar.sort((cur,next)=>{
    return cur<next
})

ar.map(item => {
    if(item===sortedArray[0]) {
        total ++;
    }
    })
return total
}
Run Code Online (Sandbox Code Playgroud)

所以我对给定的数组进行排序,然后映射整个数组并检查有多少数字等于该数组中的最大数字并计算总数。

这将通过 8/9 个测试用例,其中一个测试用例有一个长度为 100000 的数组,而这个数组失败了,是该测试用例的给定数据。

真的不明白为什么在这个测试中失败了,这可能是因为JavaScript总是同步和单线程的吗?

我尝试使用 Promise 和 async await,但是hackerrank 会将第一个返回值视为输出(即 Promise 本身)并且它不使用解析值作为输出,因此无法真正测试这一点。

我的逻辑有问题吗?

javascript arrays node.js

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