简体   繁体   中英

Why sails.js fails at startup?

I got this error after a try of linking the models (one-to-one):

Temporarily using `sails.config.models.migrate="safe"...
(press CTRL+C to cancel-- continuing lift automatically in 0.5 seconds...)

C:\Users\alex025\AppData\Roaming\npm\node_modules\sails\node_modules\waterline\lib\waterline\core\schema.js:168
    attr.type = type.toLowerCase();
                     ^
TypeError: Cannot call method 'toLowerCase' of undefined
 at Schema.objectAttribute (C:\Users\alex025\AppData\Roaming\npm\node_modules\sails\node_modules\waterline\lib\waterline\core\schema.js:168:26)
 at C:\Users\alex025\AppData\Roaming\npm\node_modules\sails\node_modules\waterline\lib\waterline\core\schema.js:58:29
 at Array.forEach (native)
 at Schema.initialize (C:\Users\alex025\AppData\Roaming\npm\node_modules\sails\node_modules\waterline\lib\waterline\core\schema.js:56:22)
 at Core._initialize (C:\Users\alex025\AppData\Roaming\npm\node_modules\sails\node_modules\waterline\lib\waterline\core\index.js:89:16)
 at module.exports (C:\Users\alex025\AppData\Roaming\npm\node_modules\sails\node_modules\waterline\lib\waterline\core\index.js:50:20)
 at module.exports (C:\Users\alex025\AppData\Roaming\npm\node_modules\sails\node_modules\waterline\lib\waterline\collection\index.js:44:8)
 at new child (C:\Users\alex025\AppData\Roaming\npm\node_modules\sails\node_modules\waterline\lib\waterline\utils\extend.js:17:39)
 at initialize (C:\Users\alex025\AppData\Roaming\npm\node_modules\sails\node_modules\waterline\lib\waterline\collection\loader.js:37:10)
 at loadCollection (C:\Users\alex025\AppData\Roaming\npm\node_modules\sails\node_modules\waterline\lib\waterline.js:111:29)

After that, I got back the working code and tried to run it, but unsuccessful. I tried to reinstall globally Sails, but this don't changed the situation.

OS: Windows 8.1
Sails.JS: v0.10.5 (fresh from npm)

User model:

module.exports = {
    connection: 'mysql',

    attributes: {
        id: {primaryKey: true},
        phone: {
            type: 'string',
            unique: true,
            required: true
        },
        role: {type: 'string'},
        name: {type: 'string'},
        city: {type: 'string'}
    }
};

Driver model:

module.exports = {
    connection: 'mongo',

    attributes: {
        id: {primaryKey: true},
        user: {model: 'User'},
        rate: {
            type: 'decimal',
            required: true
        },
        cars: {
            dominant: true,
            collection: 'Car'
        }
    }
};

Car model:

module.exports = {
    atributes: {
        number: {
            type: 'string',
            required: true
        },
        color: {
            type: 'string',
            required: true
        }
    }
};

As I see here problem is not with this issue.

This issue was closed about year ago. Problem is with your id attribute. You didn't set type for it. And waterline couldn't determinate it.

Try to remove id attribute at all. waterline should automatically add it to all your models (for mongo it did). If not you will have to set type to your id attribute.

don't know if this is resolved but there was an issue that created that error:

https://github.com/balderdashy/sails/issues/1158

(but its dated 1year ago)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM