일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Dinosaur
- OCR
- Nest.js
- class
- MySQL
- mongoose
- Python
- JavaScript
- nestjs
- game
- Bull
- flask
- 게임
- 공룡게임
- Express
- AWS
- MongoDB
- cookie
- nodejs
- TypeScript
- dfs
- GIT
- react
- Queue
- typeORM
- 자료구조
- jest
- 정렬
- Sequelize
- Today
- Total
목록mongoose (9)
포시코딩
const mongoose = require('mongoose'); const postSchema = new mongoose.Schema({ // ...생략 }); postSchema.virtual('postId').get(function() { return this._id.toHexString(); // 이 부분의 this._id에 해당하는 부분을 가상화 시킨다. }); postSchema.set('toJSON', { virtuals: true }); module.exports = mongoose.model("Post", postSchema); mongoose에서 제공하는 Schema의 가상화를 이용하는 방법인데 위에 코드에 적혀있듯, 이 Schema가 JSON화 될 때 this._id 즉, 이 스키마..
const mongoose = require('mongoose'); const postSchema = new mongoose.Schema({ user: { type: String, required: true, } // ...생략 }); postSchema.set('timestamps', true); module.exports = mongoose.model("Post", postSchema); 여기서 postSchema.set('timestamps', true); 이 부분을 통해 'user' field 뿐만 아니라 createdAt, updatedAt field 까지 자동으로 생성 및 현재 시간을 넣어줄 수 있다. (Type은 Date로 들어가는것으로 확인됨) 물론 postSchema.set('timest..

https://www.npmjs.com/package/mongoose mongoose Mongoose MongoDB ODM. Latest version: 6.8.0, last published: 8 days ago. Start using mongoose in your project by running `npm i mongoose`. There are 13094 other projects in the npm registry using mongoose. www.npmjs.com 설치 방법 npm install mongoose 문서(Document) MongoDB에서 가지고 있는 각 데이터 하나하나를 문서(Document)라고 정의한다. 1개 이상의 Key-Value의 쌍으로 이루어져 있다. { "_id": ..

Schema.virtual이란? mongoose 라이브러리에서는 MongoDB 내부에는 특정 Column이 존재하지 않지만, 데이터를 조회할 때 가상의 Column을 추가하여 좀 더 편리하게 데이터를 가공하거나 사용할 수 있도록 도와준다. Schema.set('toJSON', { virtuals: true })은 JSON 타입으로 해당 Schema를 변환할 때 가상값인 todoId를 반환하도록 설정하는 것이다. Studio 3T와 mongoose의 데이터를 비교해보았을 때, virtual로 등록된 todoId 값이 MongoDB에는 존재하지 않지만, mongoose를 이용해 조회하였을 때는 값이 존재하는 것을 확인할 수 있다. 여기서 virtual로 설정한 todoId는 return this._id; 를..

개요 위 사진과 같은 collection이 있을 때, members 안에 멤버 Object를 추가해줘야 하는 상황이다. Raid.updateOne( { _id: ObjectId(_id) }, { $push: { members: 멤버 Object } } // ...생략 ); 일반적이면 그냥 updateOne에 $push를 쓸테지만 데이터가 얼마나 많을지 몰라 이걸 계속 디비에 반복해서 작업하게 할 순 없었다. 목적은 요청 한번으로 디비안에 members에 [member1, member2, member3, ...]을 기존 데이터에 추가로 넣어주는 것이었는데 Array에 대해 $each를 써줌으로 해결할 수 있었다. $each 말그대로 Array의 각 데이터를 그 위의 명시해놓은 $push 처리를 해주는 방식..
{ _id: '1', members: [ { _id: '0001', id: 'Sam', rank: 0 }, { _id: '0002', id: 'Kim', rank: 1 } ], name: '테스트그룹' } Collection의 이름이 Target이고 0002의 랭크를 5로 변경하고 싶을 때, (Mongoose model을 target으로 만든 후 라고 가정) Target.updateOne( { _id: '1', members: { $elemMatch: { _id: '0002' } } // 또는 아래와 같이 간단하게 표현 가능 // 'members._id': '0002' }, { $set: { 'members.$.rank': 5 } }, (err, data) => { // } );
1. (SELECT) Users 컬렉션에서 id로 검색하기 User.find({ id: id }, (err, data) => { 2. (SELECT) Groups 컬렉션에서 members column에 해당하는 Object Array에서 _id값으로 검색하기 Group.find({ members: { $elemMatch: { _id: ObjectId(_id) } } }, (err, data) => { 3. (INSERT) Users 컬렉션에 id, psword, name 값으로 된 데이터 넣기 User.create({ id: userInfo.id, psword: userInfo.psword, name: userInfo.name }, (err, result) => { 4. (UPDATE) Groups 컬렉..
https://www.zerocho.com/category/NodeJS/post/57924d1e8241b6f43951af1a https://www.zerocho.com/category/NodeJS/post/57924d1e8241b6f43951af1a www.zerocho.com 기존에 있던 프로젝트를 리뉴얼 하다가 MongoDB Cloud를 통해 쓰던 데이터들을 MySQL로도 해보자! 해서 AWS RDS도 프리티어로 열어서 호기롭게 시작했다. 처음에는 오랜만에 사용하는 MySQL 쿼리문들에 어색함과 낯설음이 들었지만 차차 적응해갈 무렵 문제가 생겼다. 프로젝트 특성 때문인지 내가 그렇게 설계한것인지 JSON Object와 JSON Array를 쓸 일이 많았는데 json_array, json_unquote..
Invite.js const mongoose = require('mongoose'); //const ObjectId = mongoose.Schema.ObjectId; const inviteSchema = new mongoose.Schema({ code: String, group_id: ObjectId, created_date: Date, expired: Boolean, }); module.exports = mongoose.model('Invite', inviteSchema); 위 코드의 Invite란 model이 있을 때, ObjectId를 인식하지 못해 저장 시 에러가 발생한다. 이 경우 위 주석에 해당하는 부분을 해제하여 const ObjectId = mongoose.Schema.ObjectId; 선..