sql >> データベース >  >> NoSQL >> MongoDB

マングースは本番環境(Heroku)では(.populate())にデータを入力していませんが、ローカルでは機能します

    API関数は問題ないようです。

    あなたの問題は、モデルのセットアップ方法、またはデータベースの内容にあると思われます。 Localhostの方が寛容であるため、Herokuを初めて使用しようとしたときに同様の問題が発生しました。

    APIを機能させるには、次の3つの設定が必要です。

    (1) Model file: people.js
    

    次のようになっている必要があります:

    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;
    

    そして、「人」が参照している「友達」モデルが必要です。

    (2) Model file: friends.js
    

    次のようになります:

    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;
    

    最後に、.Populateを機能させるには、データベースに少なくとも2つのドキュメントが必要です。

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

    次のようになります:

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

    うまくいけば、これが役立つか、答えに近づくことができます。



    1. mongoDBのすべてのサブジェクトのマークを集約する方法

    2. EVERESTfulAPIに対するGeoLocationAPI呼び出し

    3. MongoDB-エラー:保存する前にドキュメントに_idが必要です

    4. mLabに接続するときのマングース接続エラー