我一直在尝试使用numtel:mysql包对来自Meteor的MySQL进行动态查询。到目前为止,它还不成功。也许我需要知道如何将动态参数传递给订阅,或者需要知道如何以数组或对象而不是游标的形式获得新的结果(liveDb是通过调用liveDb.select LiveMysql(...)实例化的)。我曾尝试在服务器端的一个方法中执行查询(如Meteor.methods(...)中声明的那样,该方法不返回结果。如果任何人有这方面的代码示例,将不胜感激!
发布于 2016-03-08 14:36:12
这里是使用Meteor和MySQL进行select查询、execute存储过程、像publish subscribe方法这样的用户mongo以及publish中的连接查询的有用链接。
//来自Leaderboard MySql example的以下代码引用
Meteor.publish(‘所有播放器’,function() { return liveDb.select( 'SELECT * FROM players BY score‘,{ table:'players’});} );Meteor.publish('playerScore',function( name ) { return liveDb.select( 'SELECT id,score FROM players name =‘+ liveDb.db.escape(name),{ table:'players',condition: function(row,newRow,rowDeleted) { //更新查询事件提供的函数名返回|| (newRow && newRow.name === name);}} );Meteor.methods({ 'incScore':function(id,amount) { check(id,Number);check(amount,Number);check(amount,Number);liveDb.db.query(‘更新玩家SET score = score +?其中id = ?',金额,id );}}));
发布于 2016-11-08 09:23:35
您需要使用Meteor.publish中定义的相同参数在MysqlSubscription上调用change。
在我的例子中:
export const mySqlSubscription = new MysqlSubscription('tableName');
Meteor.publish('tableName', function(filters){
var filterString = buildFilterString(filters);
var qString = 'SELECT ..... FROM tableName '+filterString;
//console.log(qString);
return liveDb.select( qString, [ { table: 'tableName' } ] );
}
);然后,每当我想要为不同的过滤器更新订阅时,我都会调用:
mySqlSubscription.change(this.getReactively('filterRecord'));https://stackoverflow.com/questions/33028023
复制相似问题