dresende / node-orm2

Object Relational Mapping
http://github.com/dresende/node-orm2
MIT License
3.07k stars 379 forks source link

ORMError NO_SUPPORT: Unknown property type: undefined (using q-orm) #801

Closed axelrindle closed 6 years ago

axelrindle commented 6 years ago

I'm trying to connect to a database and define a user model for my app, like this:

const orm = require('orm');
const qOrm = require('q-orm');
const vsprintf = require('sprintf-js').vsprintf;
const _ = require('lodash');

module.exports = async function() {
  try {
    var db = await qOrm.qConnect(vsprintf('mysql://%s:%s@%s:%s/%s', _.values(config.database)));

    var User = await db.qDefine('User', { // btw, this is line 10
      username: {
        type: 'text',
        unique: true,
        required: true
      },
      password: {
        type: 'text',
        required: true
      },
      realName: {
        type: 'text',
        defaultValue: ''
      },
      group: {
        type: 'text',
        defaultValue: 'User',
        required: true
      }
    }, {
      collection: 'users',
      validations: {
        username: orm.enforce.unique('Username already taken!'),
        group: orm.enforce.lists.inside(['User', 'Admin'], 'Group must be one of \'User\' or \'Admin\'')
      }
    });
    return await db.qSync();
  } catch (e) {
    console.error(e);
  }
};

The connection is working fine, but when it comes to defining the model, I receive a weird error:

{ [ORMError undefined: ]
    at Object.exports.normalize (/home/axel/Projekte/coffeedesk/node_modules/q-orm/node_modules/orm/lib/Property.js:42:9)
    at Function.Model.model.addProperty (/home/axel/Projekte/coffeedesk/node_modules/q-orm/node_modules/orm/lib/Model.js:642:23)
    at new Model (/home/axel/Projekte/coffeedesk/node_modules/q-orm/node_modules/orm/lib/Model.js:721:9)
    at ORM.define (/home/axel/Projekte/coffeedesk/node_modules/q-orm/node_modules/orm/lib/ORM.js:225:22)
    at ORM.defineModel (/home/axel/Projekte/coffeedesk/node_modules/q-orm/lib/q-orm.js:101:25)
    at module.exports (/home/axel/Projekte/coffeedesk/app/lib/orm.js:10:25)
    at <anonymous>:null:null
    at process._tickCallback (internal/process/next_tick.js:188:7)
 
  message: 'Unknown property type: undefined',
  code: 4,
  literalCode: 'NO_SUPPORT' }

What is going on and what am I doing wrong?

Versions:

dxg commented 6 years ago

I'm not sure about qOrm, never used it. We are working on native promise support in ORM, and will hopefully have that released in the next few weeks to make it easier to integrate into modern node apps.

For native promise support all the way down, I recommend using bookshelf instead.