2017-02-15 1 views
0

Итак, когда я пытаюсь отображать данные json в браузере, я получаю только [] вместо полных данных. Я пытаюсь отобразить данные из mongodb, используя mongoose и express. У меня есть одна коллекция в базе данных и один документ, который я пытаюсь отобразить, но я получаю только []. Зачем? Вот код: app.js:Почему я получаю только [] на веб-странице из res.json() в экспресс

const express = require('express'); 
const mongoose = require('mongoose'); 
const bodyParser = require('body-parser'); 
const Person = require('./Person.model'); 

const app = express(); 

mongoose.Promise = global.Promise; 
const db = 'mongodb://localhost/project'; 
mongoose.connect(db); 
mongoose.connection.once('open',() => console.log('connection has been made...')). 
on('error', (error) => console.log(error)); 

app.get('/', function(req, res) { 
    res.send('It is good to be here'); 
}); 

app.get('/persons', function(req, res) { 
    Person.find({}).exec(function(error, persons) { 
     if (error) { 
      res.send(error); 
     } else { 
      res.json(persons); 
     } 
    }); 
}); 

app.listen(3000,() => console.log('now listening to port 3000')); 

и Person.model.js:

const mongoose = require('mongoose'); 

const Schema = mongoose.Schema; 

const PersonSchema = new Schema({ 
    name: String, 
    age: Number, 
    favcolor: String, 
    osobina: String 
}); 

const Person = mongoose.model('person', PersonSchema); 

module.exports = Person; 
+0

У вас есть данные в базе данных, не так ли? –

ответ

0

Поскольку вы используете Promise с Mongoose, вы можете попробовать изменить свой код вместо использования функция обратного вызова, как этот

app.get('/persons', function(req, res) { 
    Person.find({}).exec().then(function(persons) { 
    res.json(person); 
    }).catch(function(error) { 
    res.send(error); //Will lead to a 200 with the error message inside 
    }); 
}); 

Edit

При определении модели вы не должны использовать new. Я удалил небольшой избыточный код из вашей модели, это работает:

const mongoose = require('mongoose'); 

const PersonSchema = mongoose.Schema({ 
    name: String, 
    age: Number, 
    favcolor: String, 
    osobina: String 
}); 

module.exports = mongoose.model('person', PersonSchema); 
+0

Я все еще получаю только [] в браузере и никаких данных json. Я пытался с другими базами данных и коллекциями, и я всегда получаю тот же результат. В mongo shell все работает отлично, и ошибок нет. – Uros

+0

скопировал ваш код и нашел ошибку, просто удалите 'new' из декларации модели –

+0

Все еще не работает. Я получаю только []. Учитывая _new_, это не ошибка [link] (http://mongoosejs.com/docs/guide.html). Я перезапустил монго, попробовал всю комбинацию кода, проверил в оболочке mongo и все еще не получаю json-данные. – Uros

Смежные вопросы