получить пустой массив в ответе res.json ();в коде nodejs - PullRequest
0 голосов
/ 26 июня 2019

Почему res.json отвечает пустым массивом? Я хочу получить все данные от дистрибьютора коллекции, поэтому для этого у меня есть создал файл модели и затем присвоил его переменной Distributordata

Файл сервера: app.js

var express=require('express');
var app=express();
var bodyParser=require('body-parser');
var mongoose=require('mongoose');
var Distributordata=require('./distributor.model');

var db='mongodb://localhost/Distributordata';

mongoose.connect(db);

var port=8080;

app.get('/',function(req,res){
res.send("happy to be here");  
});

 app.get('/distributor',function(req,res){
// res.send("hi from distributors")
 console.log("getting all distributors");
 Distributordata.find(function(err,distributordata){
      if(err){
        res.send("error has occured");
      }
      else{
          console.log(distributordata);
         res.send(distributordata);
     }
  });
 });

   app.listen(port,function(){
   console.log('app listening on port'+port);
  });

Файл модели: distributor.model.js

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

 var DistributorSchema=new Schema({
  dname:String,
  daddress: String
  });

  module.exports=mongoose.model('Distributordata',DistributorSchema);

выход

на cmd:

app listening on port8080

  getting all distributors

   [ ]

1 Ответ

0 голосов
/ 27 июня 2019

До сих пор я понял, что ваша проблема в том, что вы создаете свою коллекцию в mongodb самостоятельно как имя коллекции distributor. А также, поскольку вы не отправляете никакой почтовый запрос, ваш код не будет автоматически создавать коллекцию в основной базе данных.

Но по умолчанию mongoose всегда создает имя коллекции путем умножения имени модели, в вашем случае это имя коллекции будет distributordatas. Но когда вы пытаетесь получить данные из своей базы данных, она получает имя коллекции как distributor, поэтому она не может установить соединение. Но вы можете сохранить это, используя force соглашение об именах для коллекции, как вы хотите.

В вашем файле distributor.model.js измените эту строку кода на эту:

module.exports = mongoose.model('Distributordata', DistributorSchema, 'distributor');

Надеюсь, это решит вашу проблему. Для более подробной информации проверьте это https://mongoosejs.com/docs/guide.html#collection

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...