MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongoose non sta popolando (.populate()) su Production (Heroku), ma funziona su Local

La tua funzione API sembra a posto.

Sospetto che il tuo problema riguardi come sono impostati i tuoi modelli o cosa c'è nel tuo database. Ho avuto problemi simili la prima volta che ho provato a usare Heroku, perché Localhost è più clemente.

Affinché la tua API funzioni, è necessario configurare le seguenti 3 cose:

(1) Model file: people.js

deve assomigliare a qualcosa come:

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 poi devi avere un modello "Amici", a cui "Persone" fa riferimento.

(2) Model file: friends.js

deve assomigliare a:

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 infine, affinché .Populate funzioni, hai bisogno di almeno due documenti nel database.

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

deve assomigliare a:

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

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

Spero che questo ti aiuti o ti avvicini alla tua risposta.