Sailsjs Socket.IO Uncaught TypeError: this.socket.request is not a function
Sailsjs Socket.IO Uncaught TypeError: this.socket.request is not a function
我正在关注此站点上的教程:
http://code.tutsplus.com/tutorials/working-with-data-in-sailsjs--net-31525
我卡在了最后一部分,利用网络套接字。
最初我输入了代码,但出现 javascript 错误:
Uncaught TypeError: this.socket.request is not a function
所以我决定复制并粘贴教程的代码,但它给出了同样的错误。
这是代码块:
var SailsCollection = Backbone.Collection.extend({
sailsCollection: "",
socket: null,
sync: function(method, model, options){
var where = {};
if (options.where) {
where = {
where: options.where
}
}
if(typeof this.sailsCollection === "string" && this.sailsCollection !== "") {
this.socket = io.connect();
this.socket.on("connect", _.bind(function(){
this.socket.request("/" + this.sailsCollection, where, _.bind(function(users){
this.set(users);
}, this));
this.socket.on("message", _.bind(function(msg){
var m = msg.uri.split("/").pop();
if (m === "create") {
this.add(msg.data);
} else if (m === "update") {
this.get(msg.data.id).set(msg.data);
} else if (m === "destroy") {
this.remove(this.get(msg.data.id));
}
}, this));
}, this));
} else {
console.log("Error: Cannot retrieve models because property 'sailsCollection' not set on the collection");
}
}
});
我认为该教程可能已经过时,但我仍然希望我能解决最后一点问题,尤其是一路走来。
有人知道在此 BackboneJS 代码中使用 Sailsjs 套接字的正确方法吗? (我知道我在这里大海捞针)。
更新 1:
在 freenode IRC 上与#Sailjs 人员的一些初步讨论揭示了 Grunt 任务不是 运行,因此 Socket.io 没有被 Sails.js 注入?
更新 2:
好的,这里似乎已经提出了重复的问题:
Sails is not injecting the files within the assets folder
投票结束我自己的问题,帮我投赞成票:)
解决方案是更改项目根目录中的.sailsrc
行:
{
"generators": {
"modules": {}
},
"hooks": {
"grunt": true
}
}
至
{
"generators": {
"modules": {}
},
"hooks": {
}
}
我正在关注此站点上的教程:
http://code.tutsplus.com/tutorials/working-with-data-in-sailsjs--net-31525
我卡在了最后一部分,利用网络套接字。
最初我输入了代码,但出现 javascript 错误:
Uncaught TypeError: this.socket.request is not a function
所以我决定复制并粘贴教程的代码,但它给出了同样的错误。
这是代码块:
var SailsCollection = Backbone.Collection.extend({
sailsCollection: "",
socket: null,
sync: function(method, model, options){
var where = {};
if (options.where) {
where = {
where: options.where
}
}
if(typeof this.sailsCollection === "string" && this.sailsCollection !== "") {
this.socket = io.connect();
this.socket.on("connect", _.bind(function(){
this.socket.request("/" + this.sailsCollection, where, _.bind(function(users){
this.set(users);
}, this));
this.socket.on("message", _.bind(function(msg){
var m = msg.uri.split("/").pop();
if (m === "create") {
this.add(msg.data);
} else if (m === "update") {
this.get(msg.data.id).set(msg.data);
} else if (m === "destroy") {
this.remove(this.get(msg.data.id));
}
}, this));
}, this));
} else {
console.log("Error: Cannot retrieve models because property 'sailsCollection' not set on the collection");
}
}
});
我认为该教程可能已经过时,但我仍然希望我能解决最后一点问题,尤其是一路走来。
有人知道在此 BackboneJS 代码中使用 Sailsjs 套接字的正确方法吗? (我知道我在这里大海捞针)。
更新 1:
在 freenode IRC 上与#Sailjs 人员的一些初步讨论揭示了 Grunt 任务不是 运行,因此 Socket.io 没有被 Sails.js 注入?
更新 2:
好的,这里似乎已经提出了重复的问题:
Sails is not injecting the files within the assets folder
投票结束我自己的问题,帮我投赞成票:)
解决方案是更改项目根目录中的.sailsrc
行:
{
"generators": {
"modules": {}
},
"hooks": {
"grunt": true
}
}
至
{
"generators": {
"modules": {}
},
"hooks": {
}
}