반응형
mongoose를 사용하여 mongodb에 문서를 삽입하고 생성된 ID를 얻는 방법은 무엇입니까?
몽구스를 사용해서 몽구스를 수술하고 있습니다.이제 테스트를 위해 네이티브 연결을 통해 mongodb에 데이터를 삽입하고자 합니다.
그런데 문제는 삽입 후 생성된 id를 어떻게 얻을 수 있느냐는 것입니다.
노력했습니다.
var mongoose = require('mongoose');
mongoose.connect('mongo://localhost/shuzu_test');
var conn = mongoose.connection;
var user = {
a: 'abc'
};
conn.collection('aaa').insert(user);
console.log('User:');
console.log(user);
하지만 인쇄는 다음과 같습니다.
{ a: 'abc' }
거기에는 없다_id
들판.
생성할 수 있습니다._id
직접 작성하여 데이터베이스로 전송합니다.
var ObjectID = require('mongodb').ObjectID;
var user = {
a: 'abc',
_id: new ObjectID()
};
conn.collection('aaa').insert(user);
이것은 제가 가장 좋아하는 MongoDB의 특징 중 하나입니다.서로 연결된 개체를 여러 개 만들어야 하는 경우 앱과 DB 간에 여러 번 왕복할 필요가 없습니다.앱에서 모든 ID를 생성한 후 모든 ID를 삽입할 수 있습니다.
.save를 사용하면 콜백 함수에 _id가 반환됩니다.
const User = require('../models/user.js');
var user = new User({
a: 'abc'
});
user.save(function (err, results) {
console.log(results._id);
});
약속을 사용하고 싶은 경우:
const collection = conn.collection('aaa');
const instance = new collection({ a: 'abc' });
instance.save()
.then(result => {
console.log(result.id); // this will be the new created ObjectId
})
.catch(...)
또는 Node.js >= 7.6.0을 사용하는 경우:
const collection = conn.collection('aaa');
const instance = new collection({ a: 'abc' });
try {
const result = await instance.save();
console.log(result.id); // this will be the new created ObjectId
} catch(...)
upsert: true 옵션과 함께 업데이트 방법을 사용할 수 있습니다.
aaa.update({
a : 'abc'
}, {
a : 'abc'
}, {
upsert: true
});
언급URL : https://stackoverflow.com/questions/10520501/how-to-insert-a-doc-into-mongodb-using-mongoose-and-get-the-generated-id
반응형
'programing' 카테고리의 다른 글
Xcode iOS 8 키보드 유형이 지원되지 않음 (0) | 2023.05.06 |
---|---|
AVAudio Recorder를 사용하여 iPhone에서 오디오를 녹음하려면 어떻게 해야 합니까? (0) | 2023.05.06 |
Python 요청에 대한 서버 응답 시간 측정 방법 POST-request (0) | 2023.05.06 |
Git에서 전자 메일 주소 변경 (0) | 2023.05.06 |
PostgreSQL: 기본 제약 조건 이름 (0) | 2023.05.06 |