var n = new Chat();
n.name = "chat room";
n.save(function(){
//console.log(THE OBJECT ID that I just saved);
});
방금 저장 한 개체의 개체 ID를 console.log하고 싶습니다. 몽구스에서 어떻게하나요?
답변:
이것은 나를 위해 일했습니다.
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
$
나는 몽구스 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
다른 답변은 콜백 추가에 대해 언급했으며 .then () 사용하는 것을 선호합니다.
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);
});
첫 번째 줄의 "post"를 확인하십시오. 내 버전의 Mongoose에서는 데이터가 저장된 후 _id 값을 얻는 데 문제가 없습니다.
실제로 개체를 인스턴스화 할 때 ID가 이미 있어야합니다.
var n = new Chat();
console.log(n._id) // => 4e7819d26f29f407b0... -> ID is already allocated
이 답변을 확인하십시오 : https://stackoverflow.com/a/7480248/318380