[英]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.