Closed arkadiusz-wieczorek closed 8 years ago
Please include the Sealious version you're using, your resource-type declaration and the console output :)
2016-01-05 15:32 GMT+01:00 Kuba Orlik notifications@github.com:
Please include the Sealious version you're using, your resource-type declaration and the console output :)
— Reply to this email directly or view it on GitHub https://github.com/Sealious/sealious/issues/257#issuecomment-169017127.
Sealious version: 0.6.18 Resource-type declaration:
new Sealious.ChipTypes.ResourceType({
name: "places",
fields: [
{name: "name", type: "text"},
{name: "address", type: "text"},
{name: "city", type: "text"},
{name: "country", type: "text"},
{name: "category", type: "category"},
{name: "description", type: "description"},
{name: "longitude", type: "float", required: true}, //52
{name: "latitude", type: "float", required: true}, //16
{name: "image", type: "photo", params: {no_file_value: "none"}},
{name: "access", type: "access"}
],
access_strategy: {
create : "create_only_logged",
retrieve : "owner_access",
delete : "create_only_logged",
update : "owner_access"
}
});
Console output:
20:21:12.825 - error: PUT /api/v1/places/ehuyta04pkfff
from: 127.0.0.1, mime: multipart/form-data
result:
20:21:12.825 - error: TypeError: Cannot read property 'toString' of undefined
at Sealious.ChipTypes.FieldType.encode (/home/arkadiusz/Projects/Placetag/node_modules/sealious/lib/base-chips/field_type.text.js:33:41)
at tryCatcher (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/util.js:26:23)
at /home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/method.js:15:34
at encode (/home/arkadiusz/Projects/Placetag/node_modules/sealious/lib/chip-types/field-type.js:175:36)
at encode_value (/home/arkadiusz/Projects/Placetag/node_modules/sealious/lib/chip-types/resource-type-field.js:64:20)
at encode_field_values (/home/arkadiusz/Projects/Placetag/node_modules/sealious/lib/chip-types/resource-type.js:186:51)
at /home/arkadiusz/Projects/Placetag/node_modules/sealious/lib/core-services/resource-manager.js:243:33
at bound (domain.js:250:14)
at runBound (domain.js:263:12)
at tryCatcher (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/util.js:26:23)
at Promise._settlePromiseFromHandler (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/promise.js:503:31)
at Promise._settlePromiseAt (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/promise.js:577:18)
at Async._drainQueue (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/async.js:128:12)
at Async._drainQueues (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/async.js:133:10)
at Immediate.Async.drainQueues [as _onImmediate] (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/async.js:15:14)
at processImmediate [as _immediateCallback] (timers.js:371:17)
TypeError: Cannot read property 'toString' of undefined
at Sealious.ChipTypes.FieldType.encode (/home/arkadiusz/Projects/Placetag/node_modules/sealious/lib/base-chips/field_type.text.js:33:41)
at tryCatcher (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/util.js:26:23)
at /home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/method.js:15:34
at encode (/home/arkadiusz/Projects/Placetag/node_modules/sealious/lib/chip-types/field-type.js:175:36)
at encode_value (/home/arkadiusz/Projects/Placetag/node_modules/sealious/lib/chip-types/resource-type-field.js:64:20)
at encode_field_values (/home/arkadiusz/Projects/Placetag/node_modules/sealious/lib/chip-types/resource-type.js:186:51)
at /home/arkadiusz/Projects/Placetag/node_modules/sealious/lib/core-services/resource-manager.js:243:33
at bound (domain.js:250:14)
at runBound (domain.js:263:12)
at tryCatcher (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/util.js:26:23)
at Promise._settlePromiseFromHandler (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/promise.js:503:31)
at Promise._settlePromiseAt (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/promise.js:577:18)
at Async._drainQueue (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/async.js:128:12)
at Async._drainQueues (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/async.js:133:10)
at Immediate.Async.drainQueues [as _onImmediate] (/home/arkadiusz/Projects/Placetag/node_modules/sealious/node_modules/bluebird/js/main/async.js:15:14)
at processImmediate [as _immediateCallback] (timers.js:371:17)
I did manage to reproduce that issue in both 0.6.18
and the newest 0.6.21
. There needs to be an additional check in field-type.text for the value undefined.
I won't release a new version without first reproducing the bug in tests, but here's a simple patch you can apply on your local copy if you're in a hurry:
---
lib/base-chips/field_type.text.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/base-chips/field_type.text.js b/lib/base-chips/field_type.text.js
index f6fc53d..39e5c26 100644
--- a/lib/base-chips/field_type.text.js
+++ b/lib/base-chips/field_type.text.js
@@ -27,7 +27,7 @@ var field_type_text = new Sealious.ChipTypes.FieldType({
} else {
if (value_in_code instanceof Object) {
return Promise.resolve(JSON.stringify(value_in_code));
- } else if (value_in_code === null) {
+ } else if (value_in_code === null || value_in_code === undefined) {
return Promise.resolve(null);
} else {
return Promise.resolve(value_in_code.toString());
--
2.5.0
Thanks, I will check it.
There's a PR for this issue pending: https://github.com/Sealious/sealious/pull/258 :)
Pull request merged.
I've sent empty object by method PUT to resource which doesn't exist (not correct id), e.g:
I've received body (403):
Ok, I've sent again object with filled fields (
latitude
andlongitude
) then I received error (500):Whether it should be another code and body? Because this resource doesn't exist.