[MONGODB] MongoDB를 : 대신 '_id'출력 'ID'
MONGODBMongoDB를 : 대신 '_id'출력 'ID'
I 출력 ID 대신 _id하는 가장 좋은 방법은 무엇인지, (노드) 몽구스를 사용하고?
해결법
-
==============================
1.내가 이렇게 내 모델에 toClient () 메소드를 만들 수 있습니다. 또한 제거 / 클라이언트에 보내려고하지 않는 다른 속성의 이름을 바꿀 수있는 좋은 장소입니다 :
내가 이렇게 내 모델에 toClient () 메소드를 만들 수 있습니다. 또한 제거 / 클라이언트에 보내려고하지 않는 다른 속성의 이름을 바꿀 수있는 좋은 장소입니다 :
Schema.method('toClient', function() { var obj = this.toObject(); //Rename fields obj.id = obj._id; delete obj._id; return obj; });
-
==============================
2.당신은 몽구스를 사용하는 감안할 때, 당신은 몽구스가 생성하는 본질적으로 가짜 필드입니다 'virtuals에'를 사용할 수 있습니다. 그들은이 DB에 저장하지 않는, 그들은 단지 실행 시간에 채워 :
당신은 몽구스를 사용하는 감안할 때, 당신은 몽구스가 생성하는 본질적으로 가짜 필드입니다 'virtuals에'를 사용할 수 있습니다. 그들은이 DB에 저장하지 않는, 그들은 단지 실행 시간에 채워 :
// Duplicate the ID field. Schema.virtual('id').get(function(){ return this._id.toHexString(); }); // Ensure virtual fields are serialised. Schema.set('toJSON', { virtuals: true });
toJSON은이 스키마에서 생성 모델에 호출 될 때마다, 그것은 몽고가 생성하는 _id 필드를 일치하는 'ID'필드를 포함합니다. 마찬가지로 당신은 같은 방법으로 toObject의 동작을 설정할 수 있습니다.
만나다:
당신은 BaseSchema에이 추상 모든 모델은 / 연장 한 곳에서 논리를 계속 호출 할 수 있습니다. 나는 엠버 정말와 일할 수있는 'ID'필드가 선호하기 때문에, 엠버 / 노드 / 몽구스 응용 프로그램을 만드는 동안 위를 썼다.
-
==============================
3.이 기능의 몽구스 4.0 부분으로 상자 밖으로 지원됩니다. @Pascal Zajac에 의해 설명 된대로 더 이상 수동으로 가상 ID 필드를 추가 할 필요가 없습니다 것.
이 기능의 몽구스 4.0 부분으로 상자 밖으로 지원됩니다. @Pascal Zajac에 의해 설명 된대로 더 이상 수동으로 가상 ID 필드를 추가 할 필요가 없습니다 것.
그러나, JSON이 필드를 내보내려면, 여전히 가상 필드의 직렬화를 사용하는 데 필요한 것 :
Schema.set('toJSON', { virtuals: true });
-
==============================
4.
//Transform Schema.options.toJSON.transform = function (doc, ret, options) { // remove the _id of every document before returning the result ret.id = ret._id; delete ret._id; delete ret.__v; }
이 역을 할 수있는 "Schema.options.toObject.transform"속성입니다 또는 당신은 가상 ID로 바로 설정 할 수있다.
-
==============================
5.여기 @ user3087827에서 제공하는 대답의 다른 버전입니다. 당신이 schema.options.toJSON이 정의되지 않은 것으로 확인되면 당신은 사용할 수 있습니다 :
여기 @ user3087827에서 제공하는 대답의 다른 버전입니다. 당신이 schema.options.toJSON이 정의되지 않은 것으로 확인되면 당신은 사용할 수 있습니다 :
schema.set('toJSON', { transform: function (doc, ret, options) { ret.id = ret._id; delete ret._id; delete ret.__v; } });
-
==============================
6.나는 이것을 사용 :
나는 이것을 사용 :
schema.set('toJSON', { virtuals: true, versionKey:false, transform: function (doc, ret) { delete ret._id } });
나는 virtuals에 해당하는 경우이 경우 그들은 자동으로 억제 _id 좋은 것 같아요.
-
==============================
7.나는 쉽게 내 모든 프로젝트에 대한 모든 스키마가 전 세계적으로의에 적용하는 것이이 목적을 위해 플러그인을 사용하여 만들었습니다. 이 ID에 _id 변환뿐만 아니라 __v 매개 변수를 제거합니다.
나는 쉽게 내 모든 프로젝트에 대한 모든 스키마가 전 세계적으로의에 적용하는 것이이 목적을 위해 플러그인을 사용하여 만들었습니다. 이 ID에 _id 변환뿐만 아니라 __v 매개 변수를 제거합니다.
이 변환 그래서 :
{ "_id": "400e8324a71d4410b9dc3980b5f8cdea", "__v": 2, "name": "Item A" }
간단하고 청소기 :
{ "id": "400e8324a71d4410b9dc3980b5f8cdea", "name": "Item A" }
글로벌 플러그인으로 사용 :
const mongoose = require('mongoose'); mongoose.plugin(require('meanie-mongoose-to-json'));
또는 특정 스키마 :
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const MySchema = new Schema({}); MySchema.plugin(require('meanie-mongoose-to-json'));
이 사람을 도움이되기를 바랍니다.
-
==============================
8.당신은 당신이 원하는 요소를 선택하는 lodash를 사용하는 경우, 이것은 당신을 위해 작동합니다.
당신은 당신이 원하는 요소를 선택하는 lodash를 사용하는 경우, 이것은 당신을 위해 작동합니다.
UserSchema.virtual('id').get(function(){ return this._id.toHexString(); }); UserSchema.set('toObject', { virtuals: true }) UserSchema.methods.toJSON = function() { return _.pick( this.toObject(), ['id','email','firstName','lastName','username'] );
-
==============================
9.새에 의해 덮어 쓰기의 기본 방법 toJSON :
새에 의해 덮어 쓰기의 기본 방법 toJSON :
schema.method('toJSON', function () { const { __v, _id, ...object } = this.toObject(); object.id = _id; return object; });
-
==============================
10.true로 http://alexeypetrushin.github.com/mongo-lite 해당 세트 convertId 옵션을 않는 다른 드라이버가 있습니다. 자세한 내용은 "기본 및 설정"절을 참조하십시오.
true로 http://alexeypetrushin.github.com/mongo-lite 해당 세트 convertId 옵션을 않는 다른 드라이버가 있습니다. 자세한 내용은 "기본 및 설정"절을 참조하십시오.
-
==============================
11.반환에 항목을 검색 할 때 당신은 또한 집계 함수를 사용할 수 있습니다. $ 프로젝트는 당신이 당신이하고 _ID에 할당 할 수 있습니다 필드를 만들 수 있습니다.
반환에 항목을 검색 할 때 당신은 또한 집계 함수를 사용할 수 있습니다. $ 프로젝트는 당신이 당신이하고 _ID에 할당 할 수 있습니다 필드를 만들 수 있습니다.
<model>.aggregate([{$project: {_id: 0, id: '$_id'}], (err, res) => { // })
from https://stackoverflow.com/questions/7034848/mongodb-output-id-instead-of-id by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] / 자바 드라이버와 MongoDB를 지난 삽입 된 문서의 ID를 가져옵니다 (0) | 2019.12.13 |
---|---|
[MONGODB] 몽구스의 스키마 변경 다루기 (0) | 2019.12.13 |
[MONGODB] 매일 그룹 내에서 MongoDB를 집계 [중복] (0) | 2019.12.13 |
[MONGODB] Node.js를에서 데이터베이스를 조롱? (0) | 2019.12.13 |
[MONGODB] 어떻게하여 MongoDB의 핵심 기반으로 중복을 제거하는 방법? (0) | 2019.12.13 |