Nodejs返回[]而不是Json

问题描述 投票:0回答:1

数据文件

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); 

} 

应用

var express = require('express');
var app = express(); 
var bodyParser = require('body-parser');
var mongoose = require('mongoose');

GrabData =require('./models/Data'); 

// Connect to mongoose
mongoose.connect('mongodb://localhost/StephensNode', { useMongoClient: true });
//Stored in localhost via install
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
  console.log("connection Success");
});

exports.test = function(req,res) {
  res.render('test');
}; 

app.get('/', function(req, res) {
    res.send('Use API Please :)'); 
}); 

app.get('/Dir/Data', function(req, res) {

    GrabData.getData(function(err, Data){
        if(err){
            throw err;
        }
        //Chuck a error
        res.json(Data);
        console.log(Data); 
        console.log(mongoose.connection.readyState);
        //Sends data as json
    }); 
}); 


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

我遇到了一些问题,由于某些原因它没有返回JSON。 mongodb确实有数据。目前只有名称字段。我以前从未遇到过这个问题。数据库的控制台日志报告它已正常连接。我甚至甩了桌子,重新创造了没有任何成功。

json node.js mongodb
1个回答
1
投票

你有三个问题:你定义getData的方式,你调用find的方式和忘记提供限制值。

  1. 你应该将getData定义为static method
  2. find将条件作为第一个参数。如果您希望它匹配所有文档,只需使用空对象。第二个参数可能是回调函数,但是limit不会产生任何影响。
  3. 在致电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){...});
© www.soinside.com 2019 - 2024. All rights reserved.