Node.js 在 Slack 中映射返回引号和括号之间的结果 window

Node.js map returning result between quotes and brackets in Slack window

我正在构建一个 Slack 应用程序,它有一个斜杠命令,用于使用 pg-promise 模块显示来自数据库的数据,如下所示:

select: () =>
    rep.map(sql.select, null, row => {
        return 'User ' + row.username + ' is ' + row.status;
    }),

像这样,返回一个行数组,但结果总是这样:

["User username1 is status1", "User username2 is status2", ...]

我需要它显示在列表中,没有这些引号和括号。

User username1 is status1
User username2 is status2
...

我试过 replace 使用正则表达式,但它不起作用。

我认为你的结果是一个 JavaScript 数组,因此你必须对其进行迭代才能按预期显示它。

您应该将 select() 结果分配给 var,这样您就可以迭代 var

var results = select();
for(var i=0; i < results.length; i++) {
     console.log(results[i]);
}

试试这个:

var results = select();
var resultText = select.join('\n');
// console.log(resultText);

现在 resultText 将是单个字符串,每条消息由换行符分隔。

如果您的目的只是为了显示结果字符串:

var os = require('os');

rep.map(sql.select, null, row => {
    return 'User ' + row.username + ' is ' + row.status;
})
    .then(data=> {
        console.log(data.join(os.EOL));
    });

Database.map resolves with a new array of returned values, the same as your regular Array.map