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

マングースは文字列型を使用してデータを入力できません

    現在、ObjectIdのみ _idを参照する値 別のコレクションのrefsとして使用できます 。

    ここに1つのディスカッションがあります https://github.com/Automattic/mongoose/issues/2562

    ただし、将来的には1つの機能強化になる可能性があります。

    実際には、defaultを追加する必要はありません。 populateの値 フィールドで、fooAccessTypeを定義するだけです 以下のように

    fooAccessType: {
        type: String, 
        ref: 'AccessType'
    },  
    

    populationの場合

    FacilityPersonnel.findOne({_id:req.params.id})
        .populate('fooAccessType')
        .exec(
    

    ObjectID populationで使用されます 、およびObjectId は12バイトのBSONタイプであり、以下を使用して構築されます。

    つまり、SuperAdmin 正しいObjectIDではありません 。 UUID を使用できます ObjectIDのデフォルト値として

    var uuid = require('node-uuid');
    
    // ...
    fooAccessType: {
        type: String, 
        default: uuid.v1, 
        ref: 'AccessType'
    },  
    

    ただし、上記のコードは奇妙です。fooAccesType AccessTypeへの参照です ドキュメント。

    fieldを保存しようとしたとき ドキュメント、AccessType 最初に保存してから、ObjectIDを取得する必要があります この保存されたAccessTypeから それをfooAccessTypeに割り当てます 、最終的には、新しいfieldを保存します ドキュメント。

    var access = new AccessType({});
    access.save(function(err){
       if (err)
          // error handling
       else {
           facilityperson.fooAccessType = access._id;
           facilityperson.save(function(err) {
    
           });
       }
    });
    

    populationの場合

    FacilityPersonnel.findOne({_id:req.params.id})
        .populate('fooAccessType')
        .exec(
    


    1. コレクションMeteorMongo内のオブジェクトを反復処理する方法

    2. SpringDataMongoDBとJava8LocalDate MappingException

    3. クラスタ化されたnode.js/socket.io/redispub/subアプリケーションで重複したメッセージを受信して​​います

    4. ubuntu14.04のredis-server:バインドアドレスはすでに使用されています