我是Node和Meteor的新手,我正在尝试使用numtal:mysql包检索MySQL查询的插入ID。我遇到的麻烦是在服务器上运行的查询函数而不是返回到客户端。我需要ID返回客户端,以便将客户端路由到新创建的条目。
客户端:
Template.new.events({
'click .button.submit' : function(){
Meteor.call('demoFunc', function(error, result){
console.log(result);
});
},
});
服务器:
Meteor.methods({
demoFunc:function(){
//construct deal object
var newDeal = {
dealer_id : 1,
client_id : 1
};
//deal query
liveDb.db.query('INSERT INTO deal SET ?', newDeal, function(err, result){
return result.returnId;
});
}
});
如果我可以在 demoFunc 方法中获取 result.returnId 以返回到客户端,那么我将是金色的。如果有人遇到这样的事情或解决这个问题,我们将非常感谢任何帮助。
答案 0 :(得分:0)
最好的地方是https://github.com/numtel/meteor-mysql/issues
这是一个社区套餐,我强烈建议不要在生产中使用它,仅用于学习/娱乐。您还可以通过添加所需的功能为此回购做出贡献。
预计Meteor将很快支持MySQL。 Meteor购买了Fatomdb:http://techcrunch.com/2014/10/07/meteor-acquires-yc-alum-fathomdb-for-its-web-development-platform/
答案 1 :(得分:0)
我遇到了同样的问题并解决了这个包usefulio:sync-methods的问题。您可以在Github中查看该包的工作原理。
该软件包自动为服务器端定义的每个syncMethod添加一个回调函数。因此,在处理完异步结果后,您可以从服务器方法内部调用此回调函数。
所以,步骤是:
1)安装包:meteor add usefulio:sync-methods
2)将您的方法声明为syncMethod,如下所示:
Meteor.syncMethods({
demoFunc:function(callback){
//construct deal object
var newDeal = { dealer_id : 1, client_id : 1 };
//deal query
liveDb.db.query('INSERT INTO deal SET ?', newDeal, function(err, result){
callback(undefined, result.returnId);
});
}
});
3)在客户端,您只需以Meteor方式调用方法:
Meteor.call('demoFunc', function(err, result){
...
});