clarkie / dynogels

DynamoDB data mapper for node.js. Originally forked from https://github.com/ryanfitz/vogels

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Query with exists() gives error

mataide opened this issue · comments

I got this error when try to do the follow query:

Query:

Room.query('running')
        .usingIndex('status-index')
        .where('gameId').exists()
        .exec(function (err, roomList) {

Error:
Room.query(...).usingIndex(...).where(...).exists is not a function

Object:

Room = _dynogels2.default.define('Room-' + [constants.STAGE], {
                hashKey: 'id',
                timestamps: true,
                tableName: 'Room-' + [constants.STAGE],
                schema: _joi2.default.object({
                    id: _dynogels2.default.types.uuid(),
                    title: _joi2.default.string().trim().required(),
                    game: _joi2.default.string().trim().lowercase().required(),
                    mode: _joi2.default.string().trim().lowercase().required(),
                    gameType: _joi2.default.string().trim().lowercase().required(),
                    stake: _joi2.default.string().trim().lowercase().required(),
                    money: _joi2.default.string().trim().lowercase().required(),
                    stakeValue: _joi2.default.number().required(),
                    buyin: _joi2.default.number().required(),
                    rake: _joi2.default.number().required(),
                    players: _joi2.default.number().default(0),
                    maxPlayers: _joi2.default.number().required(),
                    watchers: _joi2.default.number().default(0),
                    maxWatchers: _joi2.default.number().required(),
                    gameId: _joi2.default.string().trim(),
                    region: _joi2.default.string().trim().lowercase().required(),
                    status: _joi2.default.string().trim().lowercase().default("open")
                }).unknown(true).options({ stripUnknown: true }),
                indexes : [{
                    hashKey : 'status', rangeKey : 'game', name : 'status-index', type : 'global'
                }]
            });

.where() is for range key conditions, which do not support .exists() (keys must exist, so this query would be redundant). gameId isn't even a key for this object, so you can't use .where() on it.

You want .filter('gameId').exists().