var n = new Chat();
n.name = "chat room";
n.save(function(){
//console.log(THE OBJECT ID that I just saved);
});
मैं उस ऑब्जेक्ट की ऑब्जेक्ट आईडी को सांत्वना देना चाहता हूं जिसे मैंने अभी सहेजा है। मैं मानगो में कैसे करूं?
जवाबों:
यह सिर्फ मेरे लिए काम किया:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/lol', function(err) {
if (err) { console.log(err) }
});
var ChatSchema = new Schema({
name: String
});
mongoose.model('Chat', ChatSchema);
var Chat = mongoose.model('Chat');
var n = new Chat();
n.name = "chat room";
n.save(function(err,room) {
console.log(room.id);
});
$ node test.js
4e3444818cde747f02000001
$
मैं mongoose 1.7.2 पर हूं और यह ठीक काम करता है, बस इसे फिर से सुनिश्चित करने के लिए दौड़ा।
आप मैन्युअल रूप से _id उत्पन्न कर सकते हैं फिर आपको इसे बाद में वापस खींचने के बारे में चिंता करने की आवश्यकता नहीं है।
var mongoose = require('mongoose');
var myId = mongoose.Types.ObjectId();
// then set it manually when you create your object
_id: myId
// then use the variable wherever
आप डेटाबेस में इसे सहेजे बिना एक नई वस्तु उदाहरण बनाने के बाद सही में Mongoose में ऑब्जेक्ट आईडी प्राप्त कर सकते हैं।
मैं इस कोड काम को मानस 4 में उपयोग कर रहा हूं। आप इसे अन्य संस्करणों में आज़मा सकते हैं।
var n = new Chat();
var _id = n._id;
या
n.save((function (_id) {
return function () {
console.log(_id);
// your save callback code in here
};
})(n._id));
अन्य जवाबों में कॉलबैक जोड़ने का उल्लेख किया गया है, मैं उपयोग करना पसंद करता हूं। ()
n.name = "chat room";
n.save()
.then(chatRoom => console.log(chatRoom._id));
डॉक्स से उदाहरण :।
var gnr = new Band({
name: "Guns N' Roses",
members: ['Axl', 'Slash']
});
var promise = gnr.save();
assert.ok(promise instanceof Promise);
promise.then(function (doc) {
assert.equal(doc.name, "Guns N' Roses");
});
साथ save
सब आप सिर्फ क्या करने की जरूरत है:
n.save((err, room) => {
if (err) return `Error occurred while saving ${err}`;
const { _id } = room;
console.log(`New room id: ${_id}`);
return room;
});
बस अगर कोई सोच रहा है कि उसी परिणाम का उपयोग कैसे किया जाए create
:
const array = [{ type: 'jelly bean' }, { type: 'snickers' }];
Candy.create(array, (err, candies) => {
if (err) // ...
const [jellybean, snickers] = candies;
const jellybeadId = jellybean._id;
const snickersId = snickers._id;
// ...
});
खैर, मेरे पास यह है:
TryThisSchema.post("save", function(next) {
console.log(this._id);
});
पहली पंक्ति में "पद" पर ध्यान दें। मानगो के मेरे संस्करण के साथ, डेटा सहेजने के बाद मुझे _id मान प्राप्त करने में कोई परेशानी नहीं है।
दरअसल ऑब्जेक्ट को इंस्टेंट करते समय आईडी पहले से ही होनी चाहिए
var n = new Chat();
console.log(n._id) // => 4e7819d26f29f407b0... -> ID is already allocated
इस उत्तर को यहां देखें: https://stackoverflow.com/a/7480248/318380