MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose füllt (.populate()) nicht auf Production (Heroku), funktioniert aber auf Local

Ihre API-Funktion sieht in Ordnung aus.

Ich vermute, Ihr Problem liegt darin, wie Ihre Modelle eingerichtet sind oder was sich in Ihrer Datenbank befindet. Ich hatte ähnliche Probleme, als ich zum ersten Mal versuchte, Heroku zu verwenden, weil Localhost nachsichtiger ist.

Damit Ihre API funktioniert, müssen die folgenden 3 Dinge eingerichtet werden:

(1) Model file: people.js

muss so aussehen:

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;

Und dann müssen Sie ein „Friends“-Modell haben, auf das „People“ verweist.

(2) Model file: friends.js

muss in etwa so aussehen:

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;

Und schließlich, damit .Populate funktioniert, benötigen Sie mindestens zwei Dokumente in der Datenbank.

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

muss in etwa so aussehen:

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

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

Hoffentlich hilft das oder bringt Sie Ihrer Antwort näher.