我正在使用 mongoose ODM,并且有一个如下所示的架构:
var banSchema = new Schema({
userid: { type: String, required: true, unique: true },
name: String,
groupid: String,
reason: String,
timestamp: Date
});
我想输出集合中所有文档中的每个用户 ID。我正在使用此查询来获取 userid 对象。但是我似乎无法自动获取完整列表。我必须手动输入对象编号,如下所示:
bot.onText(/\/sync/i, function (msg) {
var fromId = msg.from.id;
var chatId = msg.chat.id;
if (fromId == config.sudo) {
console.log('Sudo Confirmed And Authorized!');
Ban.find({}, function (err, obj) {
console.log(obj[0].userid); // Returns A Single ID
console.log(obj[1].toObject().userid); // Returns a different ID
bot.sendMessage(chatId, obj[1].toObject().useridid);
});
} else {
console.log('Someone Is Trying To Act Like Sudo! *sigh*');
bot.sendMessage(chatId, 'You Are Not A Mod!');
}
});
然而,这并没有像我想要的那样返回完整的 id 列表。我该如何解决这个问题?
上面的代码适用于电报机器人,在 /sync
命令上,它应该返回一条包含集合中所有 ID 的消息。
Telegram 机器人 API 限制
由于 API 限制,整个输出应位于单个消息中。
最佳答案
var query = Ban.find({}).select({
"userid": 1,
//Add more column fields here
"_id": 0 //Ensures _id is not displayed
});
var arr = [];
query.exec(function (err, results) {
if (err) throw err;
results.forEach(function (result) {
arr.push(result.userid);
// Add more column fields here;
});
var fixedJoin =arr.join("\n");
console.log(fixed);
bot.sendMessage(chatId, 'List\n\n' + fixedJoin);
});
关于arrays - 输出mongoose中的所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38880660/