MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

O Mongoose não está preenchendo (.populate()) em Produção (Heroku), mas funciona em Local


Sua função de API parece ok.

Suspeito que seu problema seja como seus modelos estão configurados ou o que está em seu banco de dados. Eu tive problemas semelhantes na primeira vez que tentei usar o Heroku, porque o Localhost é mais tolerante.

Para que sua API funcione, as três coisas a seguir devem ser configuradas:
(1) Model file: people.js

deve se parecer com algo como:
var mongoose = require("mongoose");
var Schema = mongoose.Schema;

var peopleSchema = new Schema({

  name: {
    type: String,
    required: true,
    trim: true
  },

  friends: [{
    type: Schema.Types.ObjectId,
    ref: "Friends"
  }]
});

const People = mongoose.model('Peoples', peopleSchema);

module.exports = People;

E então você deve ter um modelo 'Friends', que 'People' esteja referenciando.
(2) Model file: friends.js

deve parecer algo como:
var mongoose = require("mongoose");
var Schema = mongoose.Schema;

// Create the Comment schema
var friendsSchema = new Schema({

  friend_name: {
    type: String,
    required: true,
    trim: true
  },
});

const Friends = mongoose.model('Friends', friendsSchema);

module.exports = Friends;

E por último, para que o .Populate funcione, você precisa de pelo menos dois documentos no banco de dados.
(3) Database must contain a Person doc and a Friend doc 

deve parecer algo como:
people.js : 
    "_id": {
            "$oid": "5bef3480f202a8000984b3c5"
    }, 
    "name": "Monica Geller"
    "friends": [
        {
            "$oid": "5bef3480f202a8000984b5b4"
        }
    ]

friends.js :
    "_id": {
            "$oid": "5bef3480f202a8000984b5b4"
    },
    "friend_name": "Rachel Green"

Espero que isso ajude ou aproxime você da sua resposta.