小编Nir*_*iru的帖子

在JSON对象的子字段上进行DynamoDB查询

是否可以在dynamoDB表中搜索json对象的子字段?

我的桌子:

Item: "item name",  
Location: {...},  
ItemInformation :  
{  
   ItemName: "itemName",  
   ProductLine: {  
      Brand: "Razer",  
      ManufacturerSource: "Razer"  
}
Run Code Online (Sandbox Code Playgroud)

最初在这个表中ItemInformation将是一个键并搜索一个对象,我们将为项目信息构造json,然后用json字符串作为键进行查询.现在我们需要实现该对象的子字段搜索,这可以每次包含不同的字段,即isDigital:"true".

我在问题中注意到: DynamoDB高级扫描 - JAVA

答案似乎是否定的,我将不得不将这些字段分开.但我很好奇PHP库为什么以及如何在dynamoDB中查询JSON对象上的子字段.那么将列作为单独的字段存储然后在所有字段上添加索引真的没有更好的解决方案吗?

java json amazon-dynamodb

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

Javascript 解码 JSON 中的 unicode 反斜杠

我有一个 JSON 对象,其字符串字段可能包含与以下内容匹配的转义 unicode 字符: '\\\\\\\\u'\n例如:

\n
     chars\\\\u2078\\\\u2078 -> chars\xe2\x9c\xa8\xe2\x9c\xa8\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试使用 Stringify 进行转换,并在替换 Node.Js 12 中的额外字符后重新解析:

\n
    let s = JSON.stringify(input);\n    console.log(JSON.stringify(input));\n    let r = new RegExp('\\\\\\\\\\\\\\\\', 'g');\n    let t = s.replace(r, '\\\\');\n    console.log(t);\n    let u = JSON.parse(t);\n    console.log(u); // -> {field: 'chars\xe2\x81\xb8'}\n
Run Code Online (Sandbox Code Playgroud)\n

手动尝试替换所有 unicode 字符也不起作用:

\n
    let s = 'chars\\\\\\\\u2078\\\\\\\\u2078';\n    console.log(s); //-> chars\\\\u2078\\\\u2078\n    let r = new RegExp('\\\\\\\\(u[0-9]{4})', 'g');\n    console.log(s,' ', s.replace(r, (a,b) => {return b})); //-> chars\\\\u2078\\\\u2078 chars\\u2028\\u2078\n
Run Code Online (Sandbox Code Playgroud)\n

有没有办法解码转义的 unicode 字符,以便显示实际的 unicode 值?

\n

javascript unicode node.js

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

从另一个帐户S3存储桶复制到Redshift

是否可以从一个AWS账户S3存储桶复制到另一个AWS账户Redshift集群?我尝试这样做的方法是使用SQL Workbench登录我的AWS账户(Account1)并使用IAM用户(Account2)将文件复制到这样:

copy my_table (town,name,number)
from 's3://other-s3-account-bucket/fileToCopy.tsv'
credentials 'aws_access_key_id=<other_accounts_aws_access_key_id>;aws_secret_access_key=<other_accounts_aws_secret_access_key>'
delimiter '\t';
Run Code Online (Sandbox Code Playgroud)

我知道其他帐户的用户在仔细检查后具有s3权限.我是否有共享IAM用户或设置不同的权限才能执行此操作?

amazon-s3 amazon-web-services amazon-redshift

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

React jest 快照仅返回空 DocumentFragment

我正在使用 React 并编写一个 Modal 组件,如下所示:

const MyModal: FC<MyModalProps> = memo((props) => {
    return (
        <Modal isOpen={true} data-client-id={modal-client-id}>
            ...
        </Modal>
    );
});
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用测试库和笑话来测试它,如下所示:

    const { asFragment } = render(<MyModal {...myTestProps} />);
    const renderFragment = asFragment();
    expect(renderFragment).toMatchSnapshot();
Run Code Online (Sandbox Code Playgroud)

但是,当我检查快照时,我只看到<DocumentFragment />. 我可以通过 a 测试模态是否存在,getByTestId(modal-client-id)并且当我使用完全相同的道具在 Storybook 中运行时,我可以看到模态正在渲染并出现。当我删除周围的模态组件时,快照也可以工作并返回内部组件。Snapshot 只返回 DocumentFragment 而不是完整快照是否有原因?这是否仅仅意味着在单元测试中组件没有渲染?

reactjs jestjs testing-library

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

即使使用管理员特权 oauth 令牌,Github api 请求也会返回错误的凭据

https://api.github.com/repos/OWNER/REPO/actions/runners/registration-token我正在尝试使用具有存储库权限的用户个人访问令牌进行呼叫。

为此,我正在测试:

curl -I -X POST -H "Authorization: token <OAUTH_TOKEN> Accept: application/vnd.github.v3+json" https://api.github.com/repos/<owner>/<repo-name>/actions/runners/registration-token这给了我 Bad Credentials 错误

curl -I -H "Authorization: token <OAUTH_TOKEN>" https://api.github.com/users/<USER_NAME>->

x-oauth-scopes: repo
x-accepted-oauth-scopes: 
Run Code Online (Sandbox Code Playgroud)

根据此:https: //docs.github.com/en/rest/actions/self-hosted-runners我需要提供具有存储库访问权限的 oauth 令牌。

如果我卷曲用户curl -H "Authorization: token <OAUTH_REPO_TOKEN>" https://api.github.com/users/<USER>/repos -> []。但是,如果我转到存储库并检查设置 -> 协作者和团队,该用户将被列为具有管理员权限的团队的一部分,并且我还直接为该用户添加了一个条目。

我有什么遗漏的吗?我需要添加什么权限才能解决此问题?

curl github github-api-v3

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

Java TemporaryFolder getRoot()异常

我正在尝试在我的一个junit中使用org.junit.rules.TemporaryFolder来测试文件I/O. 我已经像这样初始化了它:

码:

   @Rule
   public TemporaryFolder temporaryFolder;

   @Before 
    public void setup() {
       this.temporaryFolder = new TemporaryFolder();
    }

   @After
   public void tearDown() {}

   @Test
   public void testCsvDataFile() throws IOException {
       File testCsvFile = this.temporaryFolder.newFile("text.csv");
       FileWriter csvFileWriter = new FileWriter(testCsvFile);
       BufferedWriter bufferedWriter = new BufferedWriter(csvFileWriter);
       bufferedWriter.write("col1,col2,col3\n");
       bufferedWriter.write("1,test1,val1\n");
       bufferedWriter.write("2,test2,val2\n");
       bufferedWriter.close();
       Map<Long,Data> data = MyReader.readCSV(testCsvFile);
       assertTrue(2 == data.size());
   }
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个例外:

例外:

java.lang.IllegalStateException: the temporary folder has not yet been created
at org.junit.rules.TemporaryFolder.getRoot(TemporaryFolder.java:127)
at org.junit.rules.TemporaryFolder.newFile(TemporaryFolder.java:64)
Run Code Online (Sandbox Code Playgroud)

当我查看TemporaryFolder代码时,它在函数getRoot()中使用了一个永远不会设置的内部属性文件夹.构造函数设置一个不同的字段:parentFolder.

有一个create()方法设置文件夹变量,但其标记仅用于测试目的.

我使用的是JDK 1.7.我是否错误地构建了TemporaryFolder?还有什么需要为此设置的系统属性吗?

java junit

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

传递文件句柄并从perl中读取

我试图打开一个文件并将其传递给一个函数并读取100行的块.要做到这一点,我做了:

open my $fh, '<', $file or die "Unable to open the file: $!";
#get the header out
my $header = <$fh>;
my @columns =  get_column_headers($header);
getData($fh, 100);

...

sub getData {
  my $fh = shift;
  my $maxLines = shift;
  my $count = 0;
  while (my $line = <$fh> && $count < $maxLines) {
        print "line is : $line \n"; 
  }
}
Run Code Online (Sandbox Code Playgroud)

这个打印行是:1
如果我在打开后在$ fh上打印参考,当我将它传递给getData时,它打印出GLOB.我如何实际检索剩余的行而不是"1",我假设它是读取的行数?我究竟做错了什么?

perl

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

Jackson 2.8 有没有办法将 null 序列化为空字符串

我想序列化类型遇到的空值,例如空字符串为"",布尔值为false,对象为"{}"。我尝试在这里遵循 Jackson 文档:https://github.com/FasterXML/jackson-docs/wiki/JacksonHowToCustomSerializers但似乎在 2.8 中没有 StdSerializerProvider。

由于这不起作用,我尝试使用@JsonSerialize(using = StringSerializer.class).

@Override
public void serialize(
        final String value,
        final JsonGenerator jsonGenerator,
        final SerializerProvider serializerProvider
) throws IOException {
    if(value == null) {
        jsonGenerator.writeString(StringUtils.EMPTY);
    } else {
        jsonGenerator.writeString(value);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我注意到当对象为 null 时,它永远不会尝试处理 null 值。Jackson 2.8 中有没有办法指定覆盖序列化空值?

serialization json jackson-databind

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