nodejs , mongo find 没有返回数据

Posted

技术标签:

【中文标题】nodejs , mongo find 没有返回数据【英文标题】:nodejs , mongo find return no data 【发布时间】:2020-04-15 05:19:12 【问题描述】:

我正在尝试使用 find() 从 mongodb 获取数据列表,虽然我在集合中有数据,但它没有返回任何数据!我不知道是什么原因,谁能帮忙?

结果如下: 错误:错误, 按摩: [ ]

这是项目依赖项

 "dependencies": 
        "body-parser": "^1.19.0",
        "express": "^4.17.1",
        "express-handlebars": "^3.1.0",
        "mongoose": "^5.8.3",
        "nodemon": "^2.0.2"
   

server.js

require('./models/db');

const express = require('express');

const loController = require('./controllers/loController');

var app = express();

app.listen(3000, () => 
    console.log('I am Listening ... ');
);

app.use('/lomanager', loController);

db.js

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/LOManager',  useNewUrlParser: true, useUnifiedTopology: true , (error) => 
    if (!error) console.log('mongoose connection success');
    else console.log("error with mongo connnect" + error);
);

require('./lo.model');

lo.model.js

const mongoose = require('mongoose');

var loSchema = new mongoose.Schema(
    _id: Number,
    name: String,
    email: String
);

module.exports = mongoose.model('LO', loSchema);

loController.js

const express = require('express');
var loSchema = require('../models/lo.model');
var mongoose = require('mongoose');

var router = express.Router();

router.get('/', (req, res) => 
    res.json('helo from lo Controller');
);

router.get('/list', (req, res) => 
    var result = ;
    loSchema.find(, (err, data) => 
        if (err) 
            result =  "error": true, "message": "error in the find" 
         else 
            result =  "error": false, "massage": data ;
        
        res.json(result);
    );
);

module.exports = router;

【问题讨论】:

评论不用于扩展讨论;这个对话是moved to chat。 【参考方案1】:

这是因为 Mongoose 默认将集合名称复数

所以我们也可以这样做:

var loSchema = new mongoose.Schema(
    _id: Number,
    name: String,
    email: String
 , collection: 'LO');


module.exports = mongoose.model('LO', loSchema);

这个链接解释了原因! mongoose-force-collection-name

【讨论】:

【参考方案2】:

您的收藏名称是'LO',所以请使用该代码

module.exports = mongoose.model('LO', loSchema,'LO');

【讨论】:

以上是关于nodejs , mongo find 没有返回数据的主要内容,如果未能解决你的问题,请参考以下文章

nodejs操作mongodb查询所有数据

NodeJS Batch Mongo 操作,等待回调

Mongo Shell 不会使用 find() 查询返回所有匹配的文档

Mongo find() 在 express 中返回 [object Object]

通过 Meteor / Mongo 返回子文档数组

MongoError: 必须使用 Mongo DB Native NodeJS Driver 对所有 $meta 排序键进行 $meta 投影