需要一些帮助来理解MySQL查询结果。存在具有列AuthorID
、FirstName
、…的表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
}
});
})