sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongoose no está poblando (.populate()) en Producción (Heroku), pero funciona en Local

Su función API se ve bien.

Sospecho que su problema es cómo están configurados sus modelos o qué hay en su base de datos. Tuve problemas similares la primera vez que intenté usar Heroku, porque Localhost es más indulgente.

Para que su API funcione, se deben configurar las siguientes 3 cosas:

(1) Model file: people.js

debe parecerse a 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;

Y luego debe tener un modelo de 'Amigos', al que hace referencia 'Personas'.

(2) Model file: friends.js

debe ser 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;

Y, por último, para que .Populate funcione, necesita al menos dos documentos en la base de datos.

(3) Database must contain a Person doc and a Friend doc 

debe ser algo como:

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

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

Esperemos que esto ayude o te acerque a tu respuesta.