0

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
        }
    }
};
Travis Webb
  • 14,688
  • 7
  • 55
  • 109
alex025
  • 173
  • 1
  • 1
  • 13

2 Answers2

2

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.

  • Thanx! That solved the startup problem but returned to the initial problem with linking one-to-one models – alex025 Nov 11 '14 at 08:55
0

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)

Nick
  • 30
  • 6