首页 > 解决方案 > Mongoose 在空数组中找到结果,并且很确定所有模型都匹配

问题描述

我确信这已经得到了回答,但我无法得到任何工作。

我有一个简单的 Node.js 应用程序,它只获取一个 id 并通过该 id 查找事件。现在我想找回所有的事件,不管他们的 ID 是什么。

下面是我的代码,我已经检查过并且数据库连接字符串工作正常(启动我的应用程序时我可以看到连接)

控制器

// Model
const Incident = require('../models/incident');

exports.fetchByID = function(req, res, next) {
    console.log(req.params.id);
    Incident.find({}, (err, incident) => {
        if(err) console.log(err)
        if(!incident || incident == []) return res.json({success: false, message: 'No incident found'});
        if(incident) return res.json({success: true, incident});
    });
};

模型

const mongoose = require('mongoose');

const incidentSchema = new mongoose.Schema({

    status: {
        type: Boolean,
        default: false
    },

    createdAt: { type: Date, required: true, default: Date.now }
});

module.exports = mongoose.model('Incident', incidentSchema);

我如何连接

// Mongo Connection
const dbString = `${config.db}/incident`;
mongoose.connect(dbString, { autoReconnect: true, useNewUrlParser: true }, (err) => {
    if (!err) console.log('MongoDB has connected successfully.');
});

Mongo Atlas 中 DB.collection 的名称incident.incidents

数据库中当前有 1 个文档。

{
 "success": true,
 "incident": [] 
}

标签: node.jsmongodbmongoose

解决方案


好的,这很奇怪......我从另一个使用相同数据库的应用程序中复制了连接字符串。唯一的区别是?retryWrites=true我尝试将它添加到我的连接字符串中并且它有效。我零线索为什么当我试图阅读而不是写任何东西时这很重要。

谁能解释发生了什么以及为什么它说它已连接并且所有内容都返回了一个空数组而不是正确的值?


推荐阅读