在Meteor方法中检索MySQL插入ID

时间:2015-02-10 22:56:03

标签: mysql node.js meteor

我是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 以返回到客户端,那么我将是金色的。如果有人遇到这样的事情或解决这个问题,我们将非常感谢任何帮助。

2 个答案:

答案 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){
    ...
});