sealcode / sealious

An extensible, declarative node framework
25 stars 2 forks source link

All field types doesn't work in current installation from npm #228

Closed arkadiusz-wieczorek closed 8 years ago

arkadiusz-wieczorek commented 8 years ago

Sealious: 0.6.3 sealious-channel-rest: 0.1.2 sealious-www-channel: 0.5.3 sealious-datastore-mongo: 0.1.4

I have created new ResourceType "test"for testing some field types.

new Sealious.ChipTypes.ResourceType({
    name: "test",
    fields: [
        {name: "date", type: "date"},
        {name: "datetime", type: "datetime"},
        {name: "email", type: "email"},
        {name: "file", type: "file", params: {no_file_value: "/img/places/default.jpg"}},
        {name: "float", type: "float"},
        {name: "int", type: "int"},
        {name: "text", type: "text"}
    ]
});

If I send POST with only date to /api/v1/test, I'll get this error. In case date, datetime, email, float fields have undefined values.

Unhandled rejection TypeError: Cannot read property 'toString' of undefined
    at Sealious.ChipTypes.FieldType.is_proper_value (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/base-chips/field_type.date.js:10:33)
    at tryCatcher (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/util.js:26:23)
    at /home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/method.js:15:34
    at /home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/field-type.js:127:39
    at tryCatcher (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._resolveFromResolver (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/promise.js:476:31)
    at new Promise (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/promise.js:69:37)
    at /home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/field-type.js:123:11
    at bound (domain.js:250:14)
    at runBound (domain.js:263:12)
    at tryCatcher (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/promise.js:503:31)
    at Promise._settlePromiseAt (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/promise.js:577:18)
    at Promise._settlePromiseAtPostResolution (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/promise.js:244:10)
    at Async._drainQueue (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/async.js:128:12)
    at Async._drainQueues (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/async.js:133:10)

In case text and int fields. I got this stack

21:25:26.277 - error:   POST /api/v1/test
            from: 127.0.0.1, mime: multipart/form-data
            result: 
21:25:26.279 - error:  TypeError: fn must be a function

    See http://goo.gl/916lJJ

    at Function.Promise.method (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/method.js:9:15)
    at get_method (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/field-type.js:74:18)
    at decode (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/field-type.js:139:16)
    at decode_value (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/resource-type-field.js:60:39)
    at decode_values (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/resource-type.js:189:32)
    at decode_db_entry (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/resource-type.js:198:15)
    at /home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/core-services/resource-manager.js:52:33
    at bound (domain.js:250:14)
    at runBound (domain.js:263:12)
    at tryCatcher (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/promise.js:503:31)
    at Promise._settlePromiseAt (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/promise.js:577:18)
    at Async._drainQueue (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/async.js:128:12)
    at Async._drainQueues (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/async.js:133:10)
    at Immediate.Async.drainQueues [as _onImmediate] (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/async.js:15:14)
    at processImmediate [as _immediateCallback] (timers.js:371:17)
TypeError: fn must be a function

    See http://goo.gl/916lJJ

    at Function.Promise.method (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/method.js:9:15)
    at get_method (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/field-type.js:74:18)
    at decode (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/field-type.js:139:16)
    at decode_value (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/resource-type-field.js:60:39)
    at decode_values (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/resource-type.js:189:32)
    at decode_db_entry (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/resource-type.js:198:15)
    at /home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/core-services/resource-manager.js:52:33
    at bound (domain.js:250:14)
    at runBound (domain.js:263:12)
    at tryCatcher (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/promise.js:503:31)
    at Promise._settlePromiseAt (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/promise.js:577:18)
    at Async._drainQueue (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/async.js:128:12)
    at Async._drainQueues (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/async.js:133:10)
    at Immediate.Async.drainQueues [as _onImmediate] (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/async.js:15:14)
    at processImmediate [as _immediateCallback] (timers.js:371:17)

In case file field, I got this error

21:30:10.377 - error:   POST /api/v1/test
            from: 127.0.0.1, mime: multipart/form-data
            result: failed - There are problems with some of the provided values.
Error: There are problems with some of the provided values.
    at new SealiousErrors.Error (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/response/error.js:6:12)
    at new SealiousErrors.ValidationError (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/response/error.js:21:12)
    at /home/arkadiusz/Projects/Placetag/placetag-app/node_modules/sealious/lib/chip-types/resource-type.js:114:28
    at bound (domain.js:250:14)
    at runBound (domain.js:263:12)
    at tryCatcher (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/promise.js:503:31)
    at Promise._settlePromiseAt (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/promise.js:577:18)
    at Promise._settlePromises (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/promise.js:693:14)
    at Async._drainQueue (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/async.js:123:16)
    at Async._drainQueues (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/async.js:133:10)
    at Immediate.Async.drainQueues [as _onImmediate] (/home/arkadiusz/Projects/Placetag/placetag-app/node_modules/bluebird/js/main/async.js:15:14)
    at processImmediate [as _immediateCallback] (timers.js:371:17)

and Postman output

{
    "data": {
        "file": "Wrong file data format. Shoudl be <Buffer>, but received undefined"
    },
    "is_error": true,
    "type": "validation",
    "status_message": "There are problems with some of the provided values."
}

In case my custom (rewrited for new api) fields like category or subcategory. I got error about undefined value.

kuba-orlik commented 8 years ago

All of the field types from base-chips had a faulty is_proper_value method (which didn't take params argument into consideration). It should be fixed now in 0.6.6. Can you confirm?

arkadiusz-wieczorek commented 8 years ago

Ok, if I've defined ResourceType like this in sealious hello-world app with └── sealious@0.6.6 └─┬ sealious-channel-rest@0.1.3 └── sealious-www-server@0.6.1

new Sealious.ChipTypes.ResourceType({
    name: "testing",
    fields: [
        {name: "int", type: "int"},
        {name: "text", type: "text"}
    ]
});

and it works.

In the case ResourceType with float:

new Sealious.ChipTypes.ResourceType({
    name: "testing",
    fields: [
        {name: "float", type: "float"}, //null
        {name: "int", type: "int"},
        {name: "text", type: "text"}
    ]
});

added resource it looks like this, the same problem occurs with datetime

{
    "id": "wjj39tlomf",
    "type": "testing",
    "body": {
        "float": null,
        "int": 2,
        "text": "sdasda"
    },
    "created_context": {
        "timestamp": 1443274974381,
        "ip": "127.0.0.1",
        "user_id": false
    }
}

In the case date:

15:43:28.452 - error:   POST /api/v1/testing
            from: 127.0.0.1, mime: multipart/form-data
            result: 
15:43:28.452 - error:  ReferenceError: date is not defined
    at Sealious.ChipTypes.FieldType.encode (/home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/base-chips/field_type.date.js:21:24)
    at tryCatcher (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/util.js:26:23)
    at /home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/method.js:15:34
    at encode (/home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/chip-types/field-type.js:150:36)
    at encode_value (/home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/chip-types/resource-type-field.js:50:20)
    at encode_field_values (/home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/chip-types/resource-type.js:127:51)
    at /home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/core-services/resource-manager.js:39:33
    at bound (domain.js:250:14)
    at runBound (domain.js:263:12)
    at tryCatcher (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/promise.js:503:31)
    at Promise._settlePromiseAt (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/promise.js:577:18)
    at Async._drainQueue (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/async.js:128:12)
    at Async._drainQueues (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/async.js:133:10)
    at Immediate.Async.drainQueues [as _onImmediate] (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/async.js:15:14)
    at processImmediate [as _immediateCallback] (timers.js:371:17)
ReferenceError: date is not defined
    at Sealious.ChipTypes.FieldType.encode (/home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/base-chips/field_type.date.js:21:24)
    at tryCatcher (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/util.js:26:23)
    at /home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/method.js:15:34
    at encode (/home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/chip-types/field-type.js:150:36)
    at encode_value (/home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/chip-types/resource-type-field.js:50:20)
    at encode_field_values (/home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/chip-types/resource-type.js:127:51)
    at /home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/core-services/resource-manager.js:39:33
    at bound (domain.js:250:14)
    at runBound (domain.js:263:12)
    at tryCatcher (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/promise.js:503:31)
    at Promise._settlePromiseAt (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/promise.js:577:18)
    at Async._drainQueue (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/async.js:128:12)
    at Async._drainQueues (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/async.js:133:10)
    at Immediate.Async.drainQueues [as _onImmediate] (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/async.js:15:14)
    at processImmediate [as _immediateCallback] (timers.js:371:17)

ResourceType with file returns this error

{
    "data": {
        "file": "Wrong file data format. Shoudl be <Buffer>, but received undefined"
    },
    "is_error": true,
    "type": "validation",
    "status_message": "There are problems with some of the provided values."
}
arkadiusz-wieczorek commented 8 years ago

Sorry, in the case datetime error stack looks like this, testing on sealious@0.6.7

16:38:05.555 - error:   POST /api/v1/testing
            from: 127.0.0.1, mime: multipart/form-data
            result: 
16:38:05.555 - error:  TypeError: Cannot read property 'check_value' of undefined
    at validate_field_values (/home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/chip-types/resource-type.js:90:45)
    at /home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/core-services/resource-manager.js:37:33
    at bound (domain.js:250:14)
    at runBound (domain.js:263:12)
    at tryCatcher (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/promise.js:503:31)
    at Promise._settlePromiseAt (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/promise.js:577:18)
    at Promise._settlePromises (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/promise.js:693:14)
    at Async._drainQueue (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/async.js:123:16)
    at Async._drainQueues (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/async.js:133:10)
    at Immediate.Async.drainQueues [as _onImmediate] (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/async.js:15:14)
    at processImmediate [as _immediateCallback] (timers.js:371:17)
TypeError: Cannot read property 'check_value' of undefined
    at validate_field_values (/home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/chip-types/resource-type.js:90:45)
    at /home/arkadiusz/Projects/hello-world/node_modules/sealious/lib/core-services/resource-manager.js:37:33
    at bound (domain.js:250:14)
    at runBound (domain.js:263:12)
    at tryCatcher (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/promise.js:503:31)
    at Promise._settlePromiseAt (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/promise.js:577:18)
    at Promise._settlePromises (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/promise.js:693:14)
    at Async._drainQueue (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/async.js:123:16)
    at Async._drainQueues (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/async.js:133:10)
    at Immediate.Async.drainQueues [as _onImmediate] (/home/arkadiusz/Projects/hello-world/node_modules/sealious/node_modules/bluebird/js/main/async.js:15:14)
    at processImmediate [as _immediateCallback] (timers.js:371:17)
new Sealious.ChipTypes.ResourceType({
    name: "testing",
    fields: [
        {name: "datetime", type: "datetime"},
        {name: "int", type: "int"},
        {name: "text", type: "text"}
    ]
});
kuba-orlik commented 8 years ago

I've added some changes to how field-type checks the input for errors in v0.6.8. Is your issue resolved?

arkadiusz-wieczorek commented 8 years ago

I've had problem with my ISP. :) I will check it.

arkadiusz-wieczorek commented 8 years ago

Issue is resolved, error with buffer in field type file I will notice to new issue.