首页 > 解决方案 > .find() 与 node.js 和 mongoose 一起使用时返回空,但在 mongo shell 上返回数据

问题描述

我刚刚在 mongodb 上创建了一个简单的数据库,并尝试使用 node.js 创建一个 api 来从数据库中获取数据。当我使用 .find() 在 mongodb shell 上查询数据库时,一切正常,我得到了数据,但是当我使用 api 做同样的事情时,我得到一个空数组。

这是我的 app.js 文件的代码:

    var express = require('express');
    var app = express();
    var bodyParser = require('body-parser');
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(bodyParser.json());
    var mongoose = require('mongoose');
    var request = require('request');

    User = require('./models/User');


    //Connect to Mongoose
    mongoose.connect("mongodb://localhost:27017/Blinc");
    mongoose.Promise = global.Promise;
    var db = mongoose.connection;

    app.get('/',function(req, res){
      res.send('Please use1 /api/books or /api/genres');
    });

    app.get('/api/users', function(req, res){
      User.getUsers(function(err, user){
        if (err) {
          throw err;
          console.log(err);
        }
        res.json(user);
        console.log(user);
    });

    });

    app.listen(3000);
    console.log('Running on port 3000....');

这是我的 User.js 文件的代码:

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;

    mongoose.connect('mongodb://localhost:27017/Blinc');

    // User Schema
    var userSchema = new Schema({
       email:{
         type: String,
         required: true
       },
       username:{
         type: String,
         required: true
       },
       password:{
         type: String,
         required: true
       },
       name:{
         type: String,
         required: false
       },
       phoneNo:{
         type: String,
         required: false
       }
     });

    var User = module.exports = mongoose.model('User', userSchema);

    // Get users

    module.exports.getUsers = function(callback, limit){
      User.find(callback).limit(limit);
    }

我的数据库名称是 Blinc,它有一个名为 User 的集合。有人可以建议我我做错了什么吗?

标签: node.jsmongodbexpress

解决方案


推荐阅读