You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Firstly, thank you very much for this awesome package that makes me save a lot of time.
As I already mentioned here: #412 (comment), I noticed that during the cleaning process, I cannot get any field outside of the subschema. However, it works in the opposite direction: I can get a subSchema field value from the parent schema. I tried to read your code to fix it myself but it was too complex and unfortunately I cannot invest more time in it yet.
Here are the tests you can run to reproduce this behavior:
// This test is passing
it('is possible to get a first level field value from inside a nested object', function () {
const test = {
firstLevel: '1st level',
nestedObject: {
secondLevel: false
}
}
const schema = new SimpleSchema({
firstLevel: String,
nestedObject: Object,
'nestedObject.secondLevel': {
type: Boolean,
autoValue() {
return this.field('firstLevel').value === test.firstLevel
}
}
})
const cleaned = schema.clean(test)
expect(cleaned.nestedObject.secondLevel).toBe(true)
})
// This one is not
it('is possible to get a first level field value from inside a subSchema', function () {
const test = {
firstLevel: '1st level',
nestedObject: {
secondLevel: false
}
}
const subSchema = new SimpleSchema({
secondLevel: {
type: Boolean,
autoValue() {
return this.field('firstLevel').value === test.firstLevel
}
}
})
const schema = new SimpleSchema({
firstLevel: String,
nestedObject: subSchema
})
const cleaned = schema.clean(test)
expect(cleaned.nestedObject.secondLevel).toBe(true)
})
// But this one is
it('is possible to get a subSchema field value from a first level field', function () {
const test = {
firstLevel: false,
nestedObject: {
secondLevel: '2nd level'
}
}
const subSchema = new SimpleSchema({
secondLevel: String
})
const schema = new SimpleSchema({
nestedObject: subSchema,
firstLevel: {
type: Boolean,
autoValue() {
return this.field('nestedObject.secondLevel').value === test.nestedObject.secondLevel
}
},
})
const cleaned = schema.clean(test)
expect(cleaned.firstLevel).toBe(true)
})
It works as expected inside validation functions like custom().
Thank you for your investment in OSS, you made a lot of good stuff for the javascript ecosystem.
The text was updated successfully, but these errors were encountered:
If this is a bug report, please be sure to include, at minimum, example code showing a small schema and any necessary calls with all their arguments, which will reproduce the issue. Even better, you can link to a saved online code editor example, where anyone can immediately run the code and see the issue.
If you are requesting a feature, include a code example of how you imagine it working if it were implemented.
If you need to edit your issue description, click the [...] and choose Edit.
Be patient. This is a free and freely licensed package that I maintain in my spare time. You may get a response in a day, but it could also take a month. If you benefit from this package and would like to see more of my time devoted to it, you can help by sponsoring.
Hello,
Firstly, thank you very much for this awesome package that makes me save a lot of time.
As I already mentioned here: #412 (comment), I noticed that during the cleaning process, I cannot get any field outside of the subschema. However, it works in the opposite direction: I can get a subSchema field value from the parent schema. I tried to read your code to fix it myself but it was too complex and unfortunately I cannot invest more time in it yet.
Here are the tests you can run to reproduce this behavior:
It works as expected inside validation functions like
custom()
.Thank you for your investment in OSS, you made a lot of good stuff for the javascript ecosystem.
The text was updated successfully, but these errors were encountered: