在rpc操作中对mysql的socketstream异步调用
首先,我需要告诉你,我对nodejs、socketstream、angularjs和JavaScript的奇妙之处还很陌生。我有Java背景,这可能解释了我不知道异步操作的正确方法 玩我从americanyak安装的东西。我的问题是,现在Rpc似乎是一个同步接口,而我对mysql数据库的调用有一个异步接口。如何在调用Rpc时返回数据库结果 以下是到目前为止我使用socketstream 0.3所做的工作: 在app.js中,我成功地告诉ss允许通过放入在rpc操作中对mysql的socketstream异步调用,mysql,node.js,asynchronous,socketstream,Mysql,Node.js,Asynchronous,Socketstream,首先,我需要告诉你,我对nodejs、socketstream、angularjs和JavaScript的奇妙之处还很陌生。我有Java背景,这可能解释了我不知道异步操作的正确方法 玩我从americanyak安装的东西。我的问题是,现在Rpc似乎是一个同步接口,而我对mysql数据库的调用有一个异步接口。如何在调用Rpc时返回数据库结果 以下是到目前为止我使用socketstream 0.3所做的工作: 在app.js中,我成功地告诉ss允许通过放入ss.api.add('coolStore'
ss.api.add('coolStore',mysqlConn)访问我的mysql数据库连接代码>位于正确的位置()。我使用mysql npm,因此可以在Rpc中调用mysql
server/rpc/coolRpc.js
控制台按照预期记录数据库条目的id。但是,我不知道如何使Rpc的return语句返回查询的行。解决这类问题的正确方法是什么
谢谢你的帮助。请友好地回答我,因为这也是我关于stackoverflow的第一个问题。这不是同步的。结果准备好后,您可以将其发回:
您需要确保始终从RPC函数调用res(…)
,即使发生错误,否则您可能会收到挂起的请求(客户端代码一直在等待从未生成的响应)。在上面的代码中,错误被转发到客户端,以便在那里处理。它不是同步的。结果准备好后,您可以将其发回:
您需要确保始终从RPC函数调用res(…)
,即使发生错误,否则您可能会收到挂起的请求(客户端代码一直在等待从未生成的响应)。在上面的代码中,错误被转发到客户端,以便在那里处理。谢谢!哦,我的。。。毕竟就是这么简单。谢谢!哦,我的。。。毕竟就是这么简单。
exports.actions = function (req, res, ss) {
// use session middleware
req.use('session');
return {
get: function(threshold){
var sql = "SELECT cool.id, cool.score, cool.data FROM cool WHERE cool.score > " + threshold;
if (!ss.arbStore) {
console.log("connecting to mysql arb data store");
ss.coolStore = ss.coolStore.connect();
}
ss.coolStore.query(sql, function(err, rows, fields) {
if(err) {
console.log("error fetching stuff", err);
} else {
console.log("first row = "+rows[0].id);
}
});
var db_rows = ???
return res(null, db_rows || []);
}
}
exports.actions = function (req, res, ss) {
// use session middleware
req.use('session');
return {
get: function(threshold){
...
ss.coolStore.query(sql, function(err, rows, fields) {
res(err, rows || []);
});
}
}
};