sql >> Databáze >  >> NoSQL >> MongoDB

Mongoose se nevyplňuje (.populate()) na Production (Heroku), ale funguje na Local

Vaše funkce API vypadá dobře.

Mám podezření, že váš problém je v tom, jak jsou vaše modely nastaveny nebo co je ve vaší databázi. Měl jsem podobné problémy, když jsem poprvé zkusil použít Heroku, protože Localhost je shovívavější.

Aby vaše API fungovalo, musí být nastaveny následující 3 věci:

(1) Model file: people.js

musí vypadat nějak takto:

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;

A pak musíte mít model 'Přátelé', na který 'Lidé' odkazují.

(2) Model file: friends.js

musí vypadat nějak takto:

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;

A konečně, aby .Populate fungovalo, potřebujete v databázi alespoň dva dokumenty.

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

musí vypadat nějak takto:

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

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

Doufejme, že to pomůže nebo vás přiblíží k vaší odpovědi.



  1. mongodb fork ve windows

  2. Embedded Redis pro Spring Boot

  3. Nyní k dispozici:Plně hostované instance MongoDB na AWS

  4. Jak mohu chránit svou cestu /sidekiq heslem (tj. vyžadovat ověření pro nástroj Sidekiq::Web)?