sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose fyller inte (.populate()) på produktion (Heroku), utan fungerar på Local

Din API-funktion ser ok ut.

Jag misstänker att ditt problem är med hur dina modeller är konfigurerade, eller vad som finns i din databas. Jag hade liknande problem första gången jag försökte använda Heroku, eftersom Localhost är mer förlåtande.

För att ditt API ska fungera måste följande 3 saker ställas in:

(1) Model file: people.js

måste se ut ungefär som:

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;

Och då måste du ha en "Vänner"-modell, som "People" refererar till.

(2) Model file: friends.js

måste se ut ungefär som:

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;

Och slutligen, för att .Populate ska fungera behöver du minst två dokument i databasen.

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

måste se ut ungefär som:

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

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

Förhoppningsvis hjälper detta, eller tar dig närmare ditt svar.



  1. redis:säkerhetskopiera dump.rdb

  2. Installera MongoDB på Manjaro

  3. Varför rekommenderas det inte att använda lagrade funktioner på serversidan i MongoDB?

  4. Node.js Mongoose.js sträng till ObjectId funktion