簡體   English   中英

MongoDB - Mongoose.model.find 返回一個空數組

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM