Validating unique key pairs in a nested object with Joi and nodeJS
up vote
0
down vote
favorite
I have the following JSON structure:
{
key1: "value1",
key2: "value2",
transactions: [
{
receiverId: '12341',
senderId: '51634',
someOtherKey: 'value'
},
{
receiverId: '97561',
senderId: '46510',
someOtherKey: 'value'
}
]
}
I'm trying to write some Joi code to validate that each object in the transactions array is unique i.e. a combination of receiverId and senderId is only ever present once. There can be a variable number of elements in the transactions array but there will always be at least 1.
Any thoughts?
javascript node.js joi
add a comment |
up vote
0
down vote
favorite
I have the following JSON structure:
{
key1: "value1",
key2: "value2",
transactions: [
{
receiverId: '12341',
senderId: '51634',
someOtherKey: 'value'
},
{
receiverId: '97561',
senderId: '46510',
someOtherKey: 'value'
}
]
}
I'm trying to write some Joi code to validate that each object in the transactions array is unique i.e. a combination of receiverId and senderId is only ever present once. There can be a variable number of elements in the transactions array but there will always be at least 1.
Any thoughts?
javascript node.js joi
1
You should consider sharing your attempts.
– KevinO
Nov 10 at 21:10
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have the following JSON structure:
{
key1: "value1",
key2: "value2",
transactions: [
{
receiverId: '12341',
senderId: '51634',
someOtherKey: 'value'
},
{
receiverId: '97561',
senderId: '46510',
someOtherKey: 'value'
}
]
}
I'm trying to write some Joi code to validate that each object in the transactions array is unique i.e. a combination of receiverId and senderId is only ever present once. There can be a variable number of elements in the transactions array but there will always be at least 1.
Any thoughts?
javascript node.js joi
I have the following JSON structure:
{
key1: "value1",
key2: "value2",
transactions: [
{
receiverId: '12341',
senderId: '51634',
someOtherKey: 'value'
},
{
receiverId: '97561',
senderId: '46510',
someOtherKey: 'value'
}
]
}
I'm trying to write some Joi code to validate that each object in the transactions array is unique i.e. a combination of receiverId and senderId is only ever present once. There can be a variable number of elements in the transactions array but there will always be at least 1.
Any thoughts?
{
key1: "value1",
key2: "value2",
transactions: [
{
receiverId: '12341',
senderId: '51634',
someOtherKey: 'value'
},
{
receiverId: '97561',
senderId: '46510',
someOtherKey: 'value'
}
]
}
{
key1: "value1",
key2: "value2",
transactions: [
{
receiverId: '12341',
senderId: '51634',
someOtherKey: 'value'
},
{
receiverId: '97561',
senderId: '46510',
someOtherKey: 'value'
}
]
}
javascript node.js joi
javascript node.js joi
asked Nov 10 at 20:53
Akshay Bhimrajka
32
32
1
You should consider sharing your attempts.
– KevinO
Nov 10 at 21:10
add a comment |
1
You should consider sharing your attempts.
– KevinO
Nov 10 at 21:10
1
1
You should consider sharing your attempts.
– KevinO
Nov 10 at 21:10
You should consider sharing your attempts.
– KevinO
Nov 10 at 21:10
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
You can use array.unique
const array_uniq_schema = Joi.array().unique((a, b) => a.receiverId === b.receiverId && a.senderId === b.senderId);
So for the whole object the schema would be (assuming all properties are required):
const schema = Joi.object({
key1: Joi.string().required(),
key2: Joi.string().required(),
transactions: array_uniq_schema.required(),
});
Thanks Christian, that worked perfectly.
– Akshay Bhimrajka
Nov 12 at 16:20
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
You can use array.unique
const array_uniq_schema = Joi.array().unique((a, b) => a.receiverId === b.receiverId && a.senderId === b.senderId);
So for the whole object the schema would be (assuming all properties are required):
const schema = Joi.object({
key1: Joi.string().required(),
key2: Joi.string().required(),
transactions: array_uniq_schema.required(),
});
Thanks Christian, that worked perfectly.
– Akshay Bhimrajka
Nov 12 at 16:20
add a comment |
up vote
0
down vote
accepted
You can use array.unique
const array_uniq_schema = Joi.array().unique((a, b) => a.receiverId === b.receiverId && a.senderId === b.senderId);
So for the whole object the schema would be (assuming all properties are required):
const schema = Joi.object({
key1: Joi.string().required(),
key2: Joi.string().required(),
transactions: array_uniq_schema.required(),
});
Thanks Christian, that worked perfectly.
– Akshay Bhimrajka
Nov 12 at 16:20
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
You can use array.unique
const array_uniq_schema = Joi.array().unique((a, b) => a.receiverId === b.receiverId && a.senderId === b.senderId);
So for the whole object the schema would be (assuming all properties are required):
const schema = Joi.object({
key1: Joi.string().required(),
key2: Joi.string().required(),
transactions: array_uniq_schema.required(),
});
You can use array.unique
const array_uniq_schema = Joi.array().unique((a, b) => a.receiverId === b.receiverId && a.senderId === b.senderId);
So for the whole object the schema would be (assuming all properties are required):
const schema = Joi.object({
key1: Joi.string().required(),
key2: Joi.string().required(),
transactions: array_uniq_schema.required(),
});
edited Nov 10 at 22:59
answered Nov 10 at 22:48
Christian
2,99612544
2,99612544
Thanks Christian, that worked perfectly.
– Akshay Bhimrajka
Nov 12 at 16:20
add a comment |
Thanks Christian, that worked perfectly.
– Akshay Bhimrajka
Nov 12 at 16:20
Thanks Christian, that worked perfectly.
– Akshay Bhimrajka
Nov 12 at 16:20
Thanks Christian, that worked perfectly.
– Akshay Bhimrajka
Nov 12 at 16:20
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53243306%2fvalidating-unique-key-pairs-in-a-nested-object-with-joi-and-nodejs%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
You should consider sharing your attempts.
– KevinO
Nov 10 at 21:10