将 mongodb 集合项添加到不和谐嵌入
Posted
技术标签:
【中文标题】将 mongodb 集合项添加到不和谐嵌入【英文标题】:Adding mongodb collection item to discord embed 【发布时间】:2019-07-18 06:02:28 【问题描述】:我想使用 MongoDB ForEach 函数将我的集合文档添加到嵌入中。
当我想将字段添加到 foreach 内的嵌入时,它会发送嵌入并跳过和添加字段。当我安慰记录它时,似乎代码发送了消息,然后添加了字段。
const Discord = require("discord.js");
const mongoDb = require("mongodb").MongoClient;
let showEmbed = new Discord.RichEmbed();
let proccess = 0;
module.exports.show = (message, page) =>
mongoDb.connect('mongodb+srv://admin:31045@robot-xi9jt.gcp.mongodb.net/eco?retryWrites=true',
useNewUrlParser: true
, function (err, db)
if (err) console.log(err);
let dbo = db.db("eco");
dbo.collection("items").find(
itemPage: page
).forEach(function (doc)
console.log(`$doc.itemName : $doc.itemPrice : $doc.itemDescription`)
showEmbed.addField(`**$doc.itemName** | $$doc.itemPrice`, doc.itemDescription, false);
)
);
message.channel.send(showEmbed);
【问题讨论】:
【参考方案1】:如果您查看 MongoDB 文档,您会看到 mongoDb.connect
returns a Promise。这意味着您的代码将连接到您的数据库,但它会在后台这样做。同时它将继续处理您的其余代码,因此它将在添加所有字段之前发送嵌入。
您可以通过将message.channel.send
移动到 Promise 中来轻松解决此问题,如下所示:
const Discord = require("discord.js");
const mongoDb = require("mongodb").MongoClient;
let showEmbed = new Discord.RichEmbed();
let proccess = 0;
module.exports.show = (message, page) =>
mongoDb.connect('Your connect URL here', useNewUrlParser: true , function (err, db)
if (err) console.log(err);
let dbo = db.db("eco");
dbo.collection("items").find(
itemPage: page
).forEach(function (doc)
console.log(`$doc.itemName : $doc.itemPrice : $doc.itemDescription`)
showEmbed.addField(`**$doc.itemName** | $$doc.itemPrice`, doc.itemDescription, false);
);
message.channel.send(showEmbed);
);
【讨论】:
以上是关于将 mongodb 集合项添加到不和谐嵌入的主要内容,如果未能解决你的问题,请参考以下文章
如何使用谷歌助手 IFTTT 将 webhook 发送到不和谐