【问题标题】:Getting error: Must specify an `id` when calling `Model.room(id)` with Sails.js Pub/Sub出现错误:使用 Sails.js Pub/Sub 调用“Model.room(id)”时必须指定“id”
【发布时间】:2015-08-26 15:20:24
【问题描述】:

我正在尝试使用 pub/sub 方法并收到此错误的垃圾邮件:

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 适配器

谢谢!

【问题讨论】:

    标签: node.js sails.js


    【解决方案1】:

    所以对于任何有这个问题的人,我想通了:

    我没有从订阅下的查询中返回 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

    【讨论】:

    • 我想你可以验证你的答案:-)
    猜你喜欢
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多