MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongoose ne remplit pas (.populate()) sur Production (Heroku), mais fonctionne sur Local

Votre fonction API semble correcte.

Je soupçonne que votre problème concerne la configuration de vos modèles ou le contenu de votre base de données. J'ai eu des problèmes similaires la première fois que j'ai essayé d'utiliser Heroku, car Localhost est plus indulgent.

Pour que votre API fonctionne, les 3 éléments suivants doivent être configurés :

(1) Model file: people.js

doit ressembler à quelque chose comme :

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;

Et puis vous devez avoir un modèle "Amis", auquel "People" fait référence.

(2) Model file: friends.js

doit ressembler à :

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;

Et enfin, pour que .Populate fonctionne, vous avez besoin d'au moins deux documents dans la base de données.

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

doit ressembler à :

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

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

J'espère que cela vous aidera ou vous rapprochera de votre réponse.