繁体   English   中英

猫鼬在执行Model.find()查询时从我的数据库返回一个空数组

Mongoose is returning an empty array from my database when doing a Model.find() query

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我查看了这个受欢迎的问题 ,但似乎并没有解决我的问题,因此我将发布此问题。

我目前有一个使用猫鼬的express.js服务器文件,该文件一直返回一个空数组。 我不知道它是否可能是由异步问题引起的,而且我不知道该用什么来表明我已连接到数据库。

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const PORT = process.env.PORT || 8080;


//Mongoose stuff
mongoose.connect('mongodb+srv://excelsiorAdmin:Mysecretpassword@excelsiorcluster-zakfd.mongodb.net/test?retryWrites=true', { useNewUrlParser: true, dbName: 'excelsiorDB'});
const dbConnection = mongoose.connection;

dbConnection.on('error', console.error.bind(console, 'connection error:'));
dbConnection.once('open', function() {
    console.log('connected to the database');

    let charSchema = new mongoose.Schema({
        imageURL: String,
        company: String,
        name: String,
        civName: String,
        alignment: String,
        firstDebut: String,
        abilities: Array,
        teams: Array,
        desc: String
    });

    let Char = mongoose.model('Char', charSchema, 'chars');

    //root
    app.get('/', (req, res, next) => res.send('Welcome to the API!'));

    //get all characters
    app.get('/chars', (req, res, next) => {
        console.log('getting all characters');
        Char.find(function (err, chars) {
            if (err) {
                res.status(404).send(err);
                console.log('there was an error');
              };
              console.log(chars);
              res.send(chars);
        });
    });

    //get heroes
    app.get('/chars/heroes', (req, res, next) => {
        Char.find({alignment: "Hero"}, function (err, chars) {
            if (err) {
                res.status(404).send(err);
            };
            res.send(chars);
        });
    });

});

app.listen(PORT, () => console.log(`This API is listening on port ${PORT}!`));
1 个回复

mongoose.model会将要查找的集合设置为等于模型名称的小写,复数形式。

let Char = mongoose.model('Char', charSchema);

这将寻找“字符”集合。 但是,如果您要连接的数据库没有名称与猫鼬默认名称相同的集合,它将从不存在的集合中返回结果。 为了确保在不匹配的集合中找到正确的集合,您必须手动输入集合名称作为第三个参数:

let Char = mongoose.model('Char', charSchema, "excelsiorCollection");
2 猫鼬Model.find()返回一个空数组

我在计算机上本地使用Mongo,Node.js和Express制作了一个用于电子商务平台的Web服务器,并将其部署在Hostman上,但是当我尝试通过Model.find()请求集合中的所有文档时,它返回null。 这是我的代码:/src/controllers/businesses.contro ...

4 Mongoose:集合中的数组属性由 Model.find() 返回空,即使它在数据库中有数据

我正在尝试使用 Mongoose 为我的数据库之一创建测试查询。 为此,我在 JSON 文件中创建了一些数据并将其导入到 MongoDB。 这是数据: 如您所见,servers 属性是一个数组,其中包含 2 个对象。 但是,当我使用以下代码使用 Mongoose 查询数据库时: Guild.fi ...

6 使用Model.find时,猫鼬返回空值

我正在尝试验证将apiKey作为参数传递到url中。 然后,通过对猫鼬进行Model.find({})来检查此apiKey是否在数据库中。 然后,我有一个使用key作为参数的回调函数,如果apiKey在数据库中不存在,我希望该参数为null。 不幸的是,我得到的只是一个空值,该值不会输 ...

7 Mongoose Model.find()在未连接到数据库时挂起

我正在经历一些错误情况,试图了解如何处理这些情况。 在没有数据库连接的情况下,Mongoose Model.find(...)调用似乎挂起。 下面是示例代码。 我会假设使用err对象调用回调,但事实并非如此。 如何防止模型调用挂起? 每次访问模型时,我是否都必须手动检查read ...

8 Model.find()在猫鼬中返回空[重复]

这个问题已经在这里有了答案: 猫鼬总是返回一个空数组NodeJS 1答案 我正在研究猫鼬在mongodb中的数据库中列出集合中的所有数据: 根据要求: 我正在执行以下代码: 我已经在数据库中输入了条目,但是上面的代码返回了空值。 为什么? ...

9 猫鼬model.find()返回一个空集合

我有这个模特 和这个API调用(hapi.js) 因此,它基本上删除了集合的内容,然后将新数据上传到其中。 我想返回该集合,以便将其显示在我的API中。 但是BlockModel.find({})返回一个空集合,尽管如果我使用mongo控制台可以检查该集合是否为空, ...

10 没有得到猫鼬 model.find() 查询的响应

我正在尝试使用模型和模式从我的 mongo 数据库中获取所有记录。 我能够连接到数据库。 当我运行查询时,我没有得到任何响应。 路由.js //mongo db 调用 模型.js 控制台输出:(节点:27440)实验警告:ESM 模块加载器是实验性的。 服务器开始连接到 mongod ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM