[英]MongoDB - Mongoose.model.find returning an empty array
我有一个简单的 Node.js 应用程序,我正在尝试与本地主机上的 MongoDB 通信,但是当我执行 mongoose.model.find 时,我似乎无法返回存储在数据库中的任何文档
当我使用指南针探索它时,我的数据库中显然有 2 个文档:
这是我的代码:
var DB_HOST = 'localhost'
var DB_PORT = 27017
const options = {
poolSize: 1000,
keepAlive: 6000000,
connectTimeoutMS: 6000000,
autoReconnect: true,
reconnectTries: 300000,
reconnectInterval: 5000,
useNewUrlParser: true
};
module.exports = {
'options' : options,
'url' : 'mongodb://'+DB_HOST+':'+DB_PORT
};
mongoose.connect(configDB.url, configDB.options);
...
var mongoose = require('mongoose');
const messagesSchema = new mongoose.Schema({
message: { type: String, required: true },
year: { type: String, required: true }
});
const Message = mongoose.model('Message', messagesSchema);
async function getMessagesByYear(req, res) {
try {
const queryYear = req.headers.query;
console.log("Get Messages by Year " + queryYear);
const messages = await Message.find({ year: queryYear });
console.log('messages: ' + messages);
res.status(200).json(messages);
} catch (err) {
console.log("Unable to get messages", err);
res.status(400).json({ message: "Unable to get messages" });
}
}
任何建议或帮助将不胜感激!
尝试在调试模式下单步执行代码,添加了打印输出但看不出为什么上面的 function 返回一个空数组。 还检查了与我的数据库的连接,它显示了正确的状态 (2)
您的 model 将引用名为messages
的集合,但数据库中的集合名为Messages
。 您可以重命名集合,也可以在制作 model 时指定集合,如下所示:
const Message = mongoose.model('Message', messagesSchema, 'Messages');
按照惯例,collections 是小写的,所以我建议重命名该集合。
看起来您也没有指定在建立连接时要使用的数据库。 您可以在连接 URI 本身或连接选项中执行此操作。 在连接 URI 中执行此操作(这是更常见的方式)将如下所示:
'mongodb://'+DB_HOST+':'+DB_PORT+'/message'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.