Node + Mongoose: récupère le dernier identifiant inséré?
Je veux récupérer la dernière inséré _id
à l'aide de la mangouste comme MongoDB wrapper pour node.js. J'ai trouvé le tutoriel suivant, mais je ne peux pas changer n'importe quel nœud de modules, car l'application s'exécute sur un serveur public:
"Le Dernier ID Inséré" (allusion - vous devez hack Mangouste)
D'autres idées? Ce que je veux faire:
- Insérer un nouvel utilisateur
- Obtenez de l'utilisateur
_id
valeur - Définir une nouvelle session en fonction de l'id de l'utilisateur
- Rediriger vers /
Merci!
source d'informationauteur Tronic
Vous devez vous connecter pour publier un commentaire.
Je suis en utilisant la mangouste version 1.2.0 et dès que j'ai créé une nouvelle instance d'une mangouste modèle, la
_id
est déjà défini.J'ai aussi vérifié qu'après j'appelle
u.save()
la_id
reste le même. J'ai vérifié via MongoHub que c'est en fait le véritable ID enregistré dans MongoDB.Si vous déclarez explicitement
pour votre modèle, puis de l'ObjectId ne sera pas disponible après la nouvelle ou de l'enregistrer.
C'est probablement un bug.
Si vous êtes à la recherche pour obtenir la dernière inséré _id d'un sous-objetpuis créer l'objet, et l'ajouter à l'article. Voici un exemple dans NowJS à l'aide de MongoDB et de la Mangouste (pour ajouter un peu de schéma de sucre) qui convertit le résultat en JSON à envoyer au client:
Avec MongoDB, si vous n'avez pas explicitement défini un document
_id
valeur puis le pilote client sera automatiquement réglée à une ObjectId valeur. Ceci est différent de bases de données qui peuvent générer des Id sur le serveur et ont besoin d'une autre requête pour récupérer, comme avec SQL Server scope_identity() ou MySQL last_insert_id().Cela vous permet d'insérer des données de manière asynchrone parce que n'avez pas besoin d'attendre que le serveur renvoie un
_id
de la valeur avant de continuer.Comme le montre est la réponse de Pierre, le
_id
est disponible avant que le document est enregistré dans la base de données.Je viens d'obtenir l'id du document transmis à la fonction de rappel, depuis enregistrer renvoie le document enregistré.
Vérifier l'url ci-dessous
http://mongodb.github.io/node-mongodb-native/markdown-docs/insert.html
vous trouverez le code suivant dans l'url donnée