小编use*_*170的帖子

Joi验证多个条件

我有以下架构:

var testSchema = Joi.object().keys({
    a: Joi.string(), 
    b: Joi.string(), 
    c: Joi.string().when('a', {'is': 'avalue', then: Joi.string().required()})
});
Run Code Online (Sandbox Code Playgroud)

但是我想在c字段定义中添加一个条件,以便在以下情况下使用它:

a == 'avalue' AND b=='bvalue'

我怎样才能做到这一点?

javascript hapijs joi

14
推荐指数
2
解决办法
9130
查看次数

无法从 Windows 主机中的 linux docker 跟踪路由

我已经安装了 18.04 ubuntu docker 映像,并在其中安装了以下软件包:

 apt-get install traceroute
 apt-get install net-tools
 apt-get install iputils-ping
 apt-get install netbase
Run Code Online (Sandbox Code Playgroud)

但是当我使用traceroute时,docker之外的所有数据包似乎都被过滤了:

#traceroute google.com
traceroute to google.com (172.217.16.206), 30 hops max, 60 byte packets

 1  172.17.0.1 (172.17.0.1)  0.397 ms  0.309 ms  0.286 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
Run Code Online (Sandbox Code Playgroud)

有没有解决方法可以使其发挥作用?请注意,在 Windows 主机中,tracert 可以工作。

traceroute docker docker-network

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

承诺 - 在Promise.all中捕获所有拒绝

我有这个虚拟代码

var Promise = require('bluebird')
function rej1(){
    return new Promise.reject(new Error('rej1'));
}

function rej2() {
    return new Promise.reject(new Error('rej2'));
}
function rej3() {
    return new Promise.reject(new Error('rej3'));
}

Promise.all([rej1(),rej2(),rej3()] ).then(function(){
    console.log('haha')
},function(e){
    console.error(e);
})
Run Code Online (Sandbox Code Playgroud)

在rejectionHandler中,我只看到第一次拒绝.是否可以查看所有三次拒绝?

node.js promise bluebird

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

joi验证:有条件地设置最小数组长度

我有一个数组字段,我想确保在满足条件时它至少具有一个元素:

genre:Joi.array().includes(data.genres).when('field'{is:'fieldValue',then:Joi.required()})
Run Code Online (Sandbox Code Playgroud)

如果我用Joi.required()。min(1)更改了'then'字段,它会抱怨。

我可以和Joi一起做吗?

node.js hapijs

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