获取错误:使用Sails.js Pub / Sub调用`Model.room(id)`时必须指定`id`

时间:2015-06-11 05:20:12

标签: node.js sails.js

我试图使用发布/订阅方法,但是我发现了这个错误:

error: Must specify an `id` when calling `Model.room(id)`

我的模型看起来像这样:

module.exports = {

  tableName: 'accounts',
  autoPk: false,

  attributes: {
    'id': {
      type: 'INTEGER',
      primaryKey: true,
      columnName: 'id'
    },

    'alias': {
      type: 'STRING',
      required: true
    }
};

然后我的控制器方法:

'subscribe': function(req, res) {
        Account.find({'select': ['steam_id', 'online']})
        .then(function(users) {
            Account.subscribe(req.socket, users);   
        })
        .catch(function(err) {
            console.log(err);
        });
}

最后,我的客户端js订阅:

socket.on('connect', function connectedToSockets() {
    console.log('Subscribing');
    socket.get('/friends/subscribe');
    socket.get('/user/subscribe');
  });

我不能为我的生活,弄清楚为什么我会被这个错误字面上的垃圾邮件,所有修复都说在列上设置一个PrimaryKey,

我正在使用sails-mysql适配器

谢谢!

1 个答案:

答案 0 :(得分:2)

所以对于有这个问题的人,我想出来了:

我没有在订阅下从查询中返回ID,所以当我添加ID时错误消失了,我猜它只需要ID作为参考。

'subscribe': function(req, res) {
        Account.find({'select': ['id', 'steam_id', 'online']})
        .then(function(users) {
            Account.subscribe(req.socket, users);   
        })
        .catch(function(err) {
            console.log(err);
        });
}

修正了它,添加了id