오브젝트를 입수하려면 어떻게 해야 합니까?몽구스에서 오브젝트를 저장한 후 아이디?
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
$
난 mongoose 1.7.2를 복용하고 있는데, 이건 정상 작동해, 만약을 위해 다시 한 번 실행했을 뿐이야.
Mongo는 완전한 문서를 Callback Object로 보내기 때문에 거기서만 얻을 수 있습니다.
예를들면
n.save(function(err,room){
var newRoomId = room._id;
});
_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에서는 새로운 오브젝트인스턴스를 작성한 직후에 오브젝트 ID를 취득할 수 있습니다.데이터베이스에 저장하지 않아도 됩니다.
이 코드 워크를 몽구스 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");
});
뭐, 이런 게 있어요.
TryThisSchema.post("save", function(next) {
console.log(this._id);
});
첫 번째 줄에 있는 "post"에 주목하십시오.내 버전의 Mongoose에서는 데이터가 저장된 후 _id 값을 얻는 데 문제가 없습니다.
와 함께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;
// ...
});
실제로 개체를 인스턴스화할 때 ID가 이미 있어야 합니다.
var n = new Chat();
console.log(n._id) // => 4e7819d26f29f407b0... -> ID is already allocated
다음 답변은 이쪽에서 확인하세요.https://stackoverflow.com/a/7480248/318380
Mongoose v5.x 매뉴얼에 따르면:
그
save()
method는 약속을 반환합니다.한다면save()
성공하면 약속은 저장된 문서로 해결됩니다.
이 기능을 사용하면 다음과 같은 기능도 사용할 수 있습니다.
let id;
n.save().then(savedDoc => {
id = savedDoc.id;
});
비동기 기능 사용
router.post('/create-new-chat', async (req, res) => {
const chat = new Chat({ name : 'chat room' });
try {
await chat.save();
console.log(chat._id);
}catch (e) {
console.log(e)
}
});
언급URL : https://stackoverflow.com/questions/6854431/how-do-i-get-the-objectid-after-i-save-an-object-in-mongoose
'programing' 카테고리의 다른 글
모듈을 찾을 수 없습니다.'swiper/react'를 해결할 수 없습니다. (0) | 2023.03.13 |
---|---|
downlevelIteration은 디폴트로 켜져 있지 않은 이유는 무엇입니까? (0) | 2023.03.13 |
nextjs에서 URL 경로 이름 가져오기 (0) | 2023.03.13 |
동적 매개 변수를 사용하여 ui-module 확인 (0) | 2023.03.13 |
모든 테스트가 실행된 후 농담 정리 (0) | 2023.03.13 |