我编写了以下代码,用于不和谐的机器人。当我调用命令时,我第一次在控制台中获得matchID。但是,当我再次调用该命令时,没有任何输出。它卡在我有console.log(“ Stuck Here”)的位置附近。我是猫鼬的新手,所以我不知道该怎么办。
if (mongoose.connection.readyState === 0) {
mongoose.connect(`mongodb://localhost/${server}`, {
useNewUrlParser: true
});
console.log('mongoose readyState is ' + mongoose.connection.readyState);
}
console.log("Stuck here!");
mongoose.connection.on("error", function (err) {
console.log("Could not connect to mongo server!");
return console.log(err);
});
mongoose.connection.on('connected', function (ref) {
console.log('Connected to mongo server.');
mongoose.connection.db.listCollections({
name: "matches"
}).next(function (err, collinfo) {
if (err) console.log(err);
if (collinfo) {
Matches.findOne({}, {}, {
sort: {
'created_at': -1
}
}, function (err, match) {
if (err) console.log(err);
console.log(`${match.matchID}`);
})
} else {
}
});
})
答案 0 :(得分:0)
猫鼬实际上是要用于单个数据库。创建多个连接或使用多个数据库不是不可能,但这也不是一件容易的事。例如,您必须为每个连接/数据库声明每个模型(例如,参见this answer)。
使用单个数据库并调整模型,使其包含属性server
可能更容易,您可以将其用作所有查询的键。
因此,要检查服务器“ X”是否有Matches
个文档,请运行Matches.findOne({ server : 'X' })
。
您还可以考虑创建一个单独的模型Servers
,该模型将存储服务器的元数据,并在Matches
和Servers
模型之间使用引用。有关here的更多信息。