我试图使用发布/订阅方法,但是我发现了这个错误:
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
适配器
谢谢!
答案 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