首先,我需要告诉你,我对nodejs,套接字流,angularjs和JavaScript的奇观一般都很陌生。我来自Java背景,这可能解释我对做异步事情的正确方式的无知。在rpc动作中将套接字流异步调用到mysql
为了玩弄我从americanyak安装ss-angular-demo的东西。我现在的问题是,Rpc似乎是一个同步接口,而我的调用mysql数据库有一个异步接口。如何在Rpc调用后返回数据库结果?
这里是我做的,到目前为止有socketstream 0.3:
在app.js我成功告诉SS,让我的mysql数据库连接,通过将ss.api.add('coolStore',mysqlConn);
在那里在正确的地方(as explained in the socketstream docs)进行访问。我用的是mysql NPM,这样我就可以在RPC
服务器中调用的mysql/RPC/coolRpc.js
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 || []);
}
}
控制台登录我的数据库条目的ID,符合市场预期。但是,我无法如何让Rpc的return语句返回查询的行。解决这类问题的正确方法是什么?
感谢您的帮助。请和我友好,因为这也是我在stackoverflow上的第一个问题。
谢谢!噢,我的......毕竟是那么简单。 – luksch 2013-04-07 12:23:18