MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

mangusta nie może wypełnić za pomocą typu String

Obecnie tylko ObjectId wartości, które odnoszą się do _id innej kolekcji może być użyty jako refs .

Oto jedna dyskusja https://github.com/Automattic/mongoose/issues/2562

Jednak może to być jedno z ulepszeń w przyszłości.

Właściwie nie ma potrzeby dodawania default wartość do populate pole, po prostu zdefiniuj fooAccessType jak poniżej

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

Dla population

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

ObjectID jest używany w population i ObjectId to 12-bajtowy typ BSON, skonstruowany przy użyciu:

Więc SuperAdmin nie jest jednym poprawnym ObjectID . Możesz użyć UUID jako domyślna wartość ObjectID

var uuid = require('node-uuid');

// ...
fooAccessType: {
    type: String, 
    default: uuid.v1, 
    ref: 'AccessType'
},  

Jednak powyższy kod jest dziwny, fooAccesType jest odniesieniem do AccessType dokument.

Kiedy próbujesz zapisać field dokument, AccessType należy najpierw zapisać, a następnie uzyskać ObjectID z tego zapisanego AccessType i przypisz go do fooAccessType , ewentualnie zapisz nowe field dokument.

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

       });
   }
});

Dla population

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Przykład niestandardowego detektora zdarzeń w dokumentacji Grails

  2. Zapytanie agregujące mongo ze sterownikiem mgo

  3. Sortuj podpola z nieznanym rodzicem

  4. Rozwiązywanie problemów z klastrem z fragmentami MongoDB

  5. Przeformatuj kolekcję za pomocą potoku agregacji w Mongodb