2017-12-22 4 views
0

데이터 파일Nodejs []를 반환하는 대신 JSON

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는 데이터를 가지고 있습니다. 단지 이름 필드 만 있습니다. 전에이 문제가 발생하지 않았습니다. 데이터베이스의 콘솔 로그에 정상적으로 연결되었다고보고되었습니다. 나는 심지어 테이블을 버리고 아무런 성공도없이 다시 만들었다.

+2

귀하의 제목을 말한다 "[] 반환 대신 JSON"을 , "[]"는 빈 배열에 대한 JSON이됩니다. 실제로 반환되는 것은 무엇입니까? – ryachza

+0

페이지는 테이블의 데이터 대신 빈 배열입니다. 그럼에도 불구하고 적어도 날짜를 반환하지 않아야합니까? –

+0

'find '의 첫 번째 인수는 콜백 함수가 아닌 조건이어야합니다. – Josh

답변

1

다음과 같은 세 가지 문제가 있습니다. getData을 정의하는 방법, find으로 전화하는 방법과 제한 값 제공을 잊어 버린 경우.

  1. 당신은 static methodgetData을 정의해야합니다.

  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){...}); 
관련 문제