Nodejs返回[]而不是Json

Nodejs返回[]而不是Json,json,node.js,mongodb,Json,Node.js,Mongodb,数据文件 var mongoose = require('mongoose'); var DataSchema = mongoose.Schema({ name:{ type: String, required: true }, create_date:{ type: Date, default: Date.now } }); var Data = module.exports = mongoo

数据文件

var mongoose = require('mongoose'); 

var DataSchema = mongoose.Schema({
    name:{
        type: String,
        required: true
    },
    create_date:{
        type: Date,
        default: Date.now
    }
}); 
var Data = module.exports = mongoose.model('Data', DataSchema); 

//Get  
module.exports.getData = function(callback, limit){

    Data.find(callback).limit(limit); 

} 
应用程序


我有点问题,因为某种原因,它没有返回JSON。mongodb中确实有数据。它现在只有name字段。我以前从未遇到过这个问题。数据库的控制台日志报告它连接良好。我甚至转储了表并重新创建,但没有成功。

您有三个问题:定义
getData
的方式,调用
find
的方式,以及忘记提供限制值

  • 您应该将
    getData
    定义为一个

  • find
    将条件作为其第一个参数。如果希望它匹配所有文档,只需使用空对象。第二个参数可以是回调函数,但是
    限制
    不会有任何效果

  • 调用
    getData
    时,您忘记为
    limit
    提供一个值。此外,最好将回调函数作为最后一个参数

  • 以下是您的模型代码的外观:

    var mongoose = require('mongoose'); 
    
    var DataSchema = mongoose.Schema({
        name:{
            type: String,
            required: true
        },
        create_date:{
            type: Date,
            default: Date.now
        }
    });
    
    DataSchema.statics.getData = function(limit, callback) {
        this.find({}).limit(limit).exec(callback);
    }
    
    module.exports = mongoose.model('Data', DataSchema); 
    
    下面是调用函数的方法:

    GrabData.getData(10, function(err, Data){...});
    

    您的标题是“返回[]而不是Json”,但是对于空数组,“[]”将是Json。实际返回的是什么?页面只是一个空数组,而不是表中的数据。即使这样,它是否至少应该返回日期呢?
    find
    的第一个参数必须是一个条件,而不是一个回调函数。Grab数据来自data.js文件,它是data.find({}).limit(limit.exec(callback)的顶部应该可以工作。
    GrabData.getData(10, function(err, Data){...});