Comment définir ObjectId comme un type de données dans la mangouste
À l'aide de node.js mongodb sur mongoHQ et de la mangouste. Je suis à la définition d'un schéma pour les Catégories. Je voudrais utiliser le document ObjectId que mon categoryId.
var mongoose = require('mongoose');
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var Schema_Category = new Schema({
categoryId : ObjectId,
title : String,
sortIndex : String
});
Je puis exécutez
var Category = mongoose.model('Schema_Category');
var category = new Category();
category.title = "Bicycles";
category.sortIndex = "3";
category.save(function(err) {
if (err) { throw err; }
console.log('saved');
mongoose.disconnect();
});
Avis que je n'ai pas de fournir une valeur pour categoryId. Je suppose mangouste utilisera le schéma de la générer, mais le document a l'habitude d' "_id" et non pas "categoryId". Ce que je fais mal?
Vous devez vous connecter pour publier un commentaire.
Contrairement à la traditionnelle RBDMs, mongoDB ne permet pas de définir n'importe quel champ comme clé primaire, le champ _id DOIT exister pour tous les documents.
Pour cette raison, il n'est pas judicieux de créer un champ uuid.
Dans la mangouste, le ObjectId type est utilisé non pas pour créer un nouvel uuid, mais il est surtout utilisé pour faire référence à d'autres documents.
Voici un exemple:
Comme vous pouvez le voir, il ne serait pas beaucoup de sens pour remplir categoryId avec un ObjectId.
Cependant, si vous en voulez une bien nommé uuid champ, la mangouste fournit virtuelle des propriétés qui vous permettent de proxy (référence) d'un champ.
Check it out:
Alors maintenant, chaque fois que vous appelez de la catégorie.categoryId, la mangouste retourne le _id à la place.
Vous pouvez aussi créer un "ensemble" de la méthode, de sorte que vous pouvez définir des propriétés virtuelles, découvrez ce lien
pour plus d'info
Je cherchais une réponse différente à la question du titre, alors peut-être que d'autres personnes aussi.
De définir le type comme un ObjectId (de sorte que vous peut faire référence à
author
comme l'auteur debook
, par exemple), vous pouvez faire comme:Ma solution sur l'utilisation de ObjectId
À l'aide de la mangouste est remplir méthode
De la solution fournie par @dex a fonctionné pour moi. Mais je veux ajouter quelque chose d'autre qui a également travaillé pour moi: Utilisation
si ce que vous voulez créer est un Tableau de référence. Mais si ce que vous voulez, c'est un Objet de référence, qui est ce que je pense que vous pourriez être à la recherche de toute façon, enlever les crochets de la valeur prop, comme ceci:
Regarder les 2 fragments de bien. Dans le second cas, la valeur prop des principaux événements n'ont pas de crochets sur l'objet def.