2013-05-23 5 views
0

Я изучал простое приложение node.js + mongoose, однако что-то пошло не так. Я работал на некоторых примерах с этого сайта, но не повезло. Выполняется код, однако записи из db (который заполнен, кстати) не возвращаются. Может ли кто-нибудь взглянуть и помочь? Я работаю над этим уже более дня, но без радости.Node.js + Mongoose - что случилось?

модели/entidade.js

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

var entidadeSchema = new Schema({ 
     cnpj: String, 
     razaoSocial: String, 
     nomeFantasia: String, 
     endereco: String, 
     unidades: [{ codigo: String, nome: String, endereco: String, ativo: {type: Boolean, default: true} }], 
     dataCriacao: { type: Date, default: Date.now }, 
     cadastroAtivo: { type: Boolean, default: false }, 
    }); 

module.exports = mongoose.model('Entidade', entidadeSchema); 

маршруты/entidades.js

var Entidade = require('../models/entidade.js'); 

exports.list = function(req, res) { 
    Entidade.find(function(err, entidades) { 
     console.log("route IN: %d records", entidades.length); 
     res.send(entidades); 
    }); 
}; 

и, наконец, server.js

var express = require('express');  
var app = express(); 

app.configure(function() { 
    app.use(express.logger('dev')); 
    app.use(express.bodyParser()); 
}); 

// connection to mongoDB 
var mongoose = require('mongoose'); 
mongoose.connect('mongodb://127.0.0.1/ccidev');  

var entidade = require('./routes/entidades'); 

app.get('/entidades/list', entidade.list); 

app.listen(3000); 

Как я уже сказал, при запуске приложения я не получаю никаких ошибок, но пустой результат. Любая помощь приветствуется.

Спасибо и уважением, Виниций

ответ

1

Согласно documentation, первый аргумент Model.find() является условие Попробуйте

Entidade.find({}, function(err, entidades) {}); 

маршруты/entidades.js

var Entidade = require('../models/entidade.js'); 

exports.list = function(req, res) { 
    Entidade.find({}, function(err, entidades) { 
     console.log("route IN: %d records", entidades.length); 
     res.send(entidades); 
    }); 
}; 
+0

Сначала я думал то же самое, но 'find()', кажется, работает отлично, без каких-либо условий (и просто обратного вызова). Кстати, на ваш ответ также не хватает условий ... – robertklep

+0

Да, ребята, 'find()' должен просто отлично работать. Я нашел проблему ... база данных была создана за пределами приложения. Я имею в виду, что я не загружал данные с помощью приложения. Поэтому я попытался загрузить ТОЛЬКО данные с помощью метода POST, и он работал нормально. Теперь данные отображаются (единственным отличием от предыдущей схемы был атрибут '__v', который был добавлен mongoose для контроля версий). Довольно странно, но, по крайней мере, сейчас это работает! И спасибо большое @lemulot и @robertklep за ваши мысли! Я очень ценю обратную связь! :) – vbatista

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