获取一个空数组 Mongoose

Posted

技术标签:

【中文标题】获取一个空数组 Mongoose【英文标题】:Getting an empty array Mongoose 【发布时间】:2021-02-01 12:43:52 【问题描述】:

我无法通过 mongoose 从我的 MongoDb 集合中获取数据 - 我从我的请求中得到一个空数组。只有当我使用我在下面发布的路线时才会发生这种情况。 代码

router.get("/options", async (req,res) => 
  try 
    const  animalClass = req.body;
    if (!animalClass) 
    const animalClasses = await AnimalClass.find();
    console.log(animalClasses);

    return res
      .status(200)
      .json(animalClasses)

     else 
      const animalTypes = await AnimalType.find(class: animalClass);
      console.log(animalTypes);

      return res
        .status(200)
        .json(animalTypes)
    

   catch (err) 
    res
      .status(500)
      .json(msg: err)
  
);

架构

const mongoose = require('mongoose');

const animalClassSchema = new mongoose.Schema(
  name: type: String, required: true
)

module.exports = AnimalClass = mongoose.model('animalClass',animalClassSchema);

【问题讨论】:

默认情况下,Mongoose 会将您的收藏名称复数。这可能就是正在发生的事情。你能验证吗?尝试指定您的集合名称,如以下答案:***.com/a/7527515/1520071 这很奇怪,但它确实有效:B 是的,ORM 的陷阱之一 :) 有时它们会试图为您做太多事情。我发布了一个答案,因为您确认这是问题所在。 【参考方案1】:

创建schema时指定集合名称,如:

const animalClassSchema = new mongoose.Schema(
  name: type: String, required: true
,  collection: 'animalClass' );

默认情况下,Mongoose 会将您的收藏名称复数。此选项允许您覆盖该行为。文档中的更多信息:

https://mongoosejs.com/docs/guide.html#collection

【讨论】:

以上是关于获取一个空数组 Mongoose的主要内容,如果未能解决你的问题,请参考以下文章

在js中先定义一个空数组 用来存储获取的数据,如下,怎么知道数组获取数据的具体内容呢

Tableview使用空数组获取索引超出范围

使用 axios 获取数据后 React useEffect 返回空数组

如何在数组php中仅获取非空元素计数

线程 1:致命错误:索引超出范围。没有快速从数组中获取值,控制台显示它们不是空数组

向 Laravel Api 发出 POST 请求时,React Native 获取一个空数组