node.js选择查询结果作为telegram bot应答发送



需要一些帮助来理解MySQL查询结果。存在具有列AuthorIDFirstName、…的表authors。。。,SearchName。我想从中选择并发送SearchName的值作为bot 的答案

这样:

bot.on('text', (ctx) => {
const q = ctx.message.text //here I recieve a message to bot as a string to use in select
const sql = "SELECT SearchName FROM authors WHERE LastName LIKE '%"+ q +"%'";
connection.query(sql, function(err, results) {
if(err) console.log(err);
console.log(results);
ctx.reply(results);
console.log(q);
});
})

所以它在控制台中的结果是这样的:

TextRow { SearchName: 'ПЕТРОВА ЮЛИЯ ИГОРЕВНА' },
TextRow { SearchName: 'ПЕТРОВА ЕЛЕНА ВЛАДИМИРОВНА' },
TextRow { SearchName: 'ПЕТРОВА ИРИНА ВЛАДИМИРОВНА' },
TextRow { SearchName: 'ПЕТРОВА В К' },
TextRow { SearchName: 'ПЕТРОВА ВЛАДИНАТА' },
TextRow { SearchName: 'ПЕТРОВА ИРИНА' },

和肯定相同的数据,但在机器人回答中展开视图:

[{"SearchName":"ПЕТРОВА ЮЛИЯ ИГОРЕВНА"},{"SearchName":"ПЕТРОВА ЕЛЕНА ВЛАДИМИРОВНА"},{"SearchName":"ПЕТРОВА ИРИНА ВЛАДИМИРОВНА"},{"SearchName":"ПЕТРОВА В К"},{"SearchName":"ПЕТРОВА ВЛАДИНАТА"},{"SearchName":"ПЕТРОВА ИРИНА"},

所以,我请求帮助如何只获取值,此外,我想将其作为从机器人到用户的独立回复进行管理。即用户发送字符串并获得与查询返回的行数一样多的回复。

现在所要做的就是在db查询回调中循环结果,在那里创建并发送bot消息。这里有一个例子,

bot.on('text', (ctx) => {
const q = ctx.message.text //here I recieve a message to bot as a string to use in select
const sql = "SELECT SearchName FROM authors WHERE LastName LIKE '%"+ q +"%'";
connection.query(sql, function(err, results) {
if(err) console.log(err);
console.log(results);
for (const result of results) { // each row
ctx.reply(result.SearchName); // send the SearchName field from the object
}
});
})

最新更新