[MongoDB] Node.js mongoseを使ったCRUD
https://velog.io/@limsw/MongoDB-Mongose-モードおよび-構成-および-APIの使用例
対応する位置はNodeこれはjs mongoseを用いてMongoDBを処理する最後の文章です.この記事では、MongoDB CRUDの例について説明します.アーキテクチャやモデルを定義していない人は、上記の記事を参照してください.
前記事では、
今回のCRUDでは、以下の内容について説明します.修正案後文書保存時に検証名を繰り返す
コレクション内のデータは、次の状態で行われます.
まず、
ポストマンで見た結果です.上図のように、2つの性別が男性のDocumentを返していることが確認できます.
上位データが1個しか確認できない.
現在のアーキテクチャでは重複処理が行われていないため、同じドキュメントを保存しても問題はありません.ただし、実際のプロジェクトを実施する場合は、Eメールなどのユーザー情報が重複しないことを確認してください.
筆者のシナリオには現在電子メールフィールドがないため,重複を避けるためにシナリオの修正を決定した.
したがって、現在のアーキテクチャにおける
これで、既存のname値と同じ値を使用してPOSTリクエストを送信できます.
400 Bad Requestエラーが返される.エラーを表示すると、nameの値が重複していると判断できます
文書の修正には
コードは次のように整理できます.
要求の実行が良好であることが確認できる.結果は以下の通りです.
データも可能
ドキュメントの削除には
サンプルコードは次のとおりです.
現在
確認できる
リクエストがうまくいっている
ドキュメントも2つに減っている.
条件を指定すると、複数の条件を満たすドキュメントがある場合は、これらのドキュメントはすべて削除されます.
例えば、筆者のデータには、性別が45,67914の文書が100名ある場合、このように条件を設定すると、100個の文書が削除される可能性があるので注意が必要である.
https://www.geeksforgeeks.org/mongoose-find-function/?ref=lbp
このアドレスの
対応する位置はNodeこれはjs mongoseを用いてMongoDBを処理する最後の文章です.この記事では、MongoDB CRUDの例について説明します.アーキテクチャやモデルを定義していない人は、上記の記事を参照してください.
緒論
前記事では、
find()
メソッドを使用したクエリー機能と、save()
メソッドを使用してドキュメントを格納した例を見ました.今回のCRUDでは、以下の内容について説明します.
find()
メソッドに条件を追加して行う前処理ドキュメント照会findOne()
使用方法の単一データ照会update()
使い方修正文書remove()
使い方ドキュメント削除Read機能の実装
コレクション内のデータは、次の状態で行われます.
find()メソッドへの条件の追加
まず、
find()
メソッドに条件を追加するには、次のコードを変更します.// 기존 코드 : 모든 Document 조회하기
router.get('', (req, res, next) => {
User.find().then((result) => {
res.json(result);
}).catch((err) => {
res.send(err);
});
});
// 수정된 코드 : 성별이 male인 Document 조회하기
router.get('', (req, res, next) => {
User.find({sex: "male"}).then((result) => {
res.json(result);
}).catch((err) => {
res.send(err);
});
});
find()
メソッドに条件を追加するため、{}
に条件を追加できます.これは![](https://s1.md5.ltd/image/7f45c1dc1fef12dd89af2cf8e297a767.png)
findOne()メソッドを使用して単一のデータを表示する
findOne()
メソッドは、前処理データの最上位レベルのデータを返すメソッドである.router.get('', (req, res, next) => {
User.findOne({sex: "male"}).then((result) => {
res.json(result);
}).catch((err) => {
res.send(err);
});
});
以上のように、既存のfind()
関数をfindOne()
関数に変更してGET要求を出したらどうなりますか?![](https://s1.md5.ltd/image/1bf202ce58adae29129b71009b21d204.png)
Create機能の変更
現在のアーキテクチャでは重複処理が行われていないため、同じドキュメントを保存しても問題はありません.ただし、実際のプロジェクトを実施する場合は、Eメールなどのユーザー情報が重複しないことを確認してください.
筆者のシナリオには現在電子メールフィールドがないため,重複を避けるためにシナリオの修正を決定した.
したがって、現在のアーキテクチャにおける
name
フィールドの重複を避けるために、フィールドに対して以下の変更を加えることができる.// user.js
const userSchema = mongoose.Schema({
name: {
type: String,
maxlength: 50,
unique: true, // 해당 부분 추가
},
password: {
type: String,
minlength: 7,
},
sex: {
type: String,
}
});
name
オプションを追加することで、このフィールドをユニークに指定します.これで、既存のname値と同じ値を使用してPOSTリクエストを送信できます.
![](https://s1.md5.ltd/image/c25d22413e6a7ed8b5efa27ae03758ca.png)
unique
.Documentの変更
文書の修正には
lim
メソッドを使用します.コードは次のように整理できます.
router.patch('', (req, res, next) => {
User.update({name: "lim"}, {name: "limsw"})
.then((result) => {res.json(result)})
.catch((err) => {res.json(err)});
});
update()
メソッドは2つのパラメータを受け入れ、1つ目は条件、2つ目は変更するデータを示す.筆者は,nameの値でlim付きDocumentを検索し,そのDocumentのnameをlimswに変更した.update()
PATCHリクエスト送信![](https://s1.md5.ltd/image/bae473d6367d5e4f67d92305bc976e63.png)
![](https://s1.md5.ltd/image/062c30bb70f1de08e5d1521f9da19d4e.png)
localhost:3000/user
ユーザー定義通りに良く変更されたか確認します.Documentの削除
ドキュメントの削除には
limsw
メソッドを使用します.サンプルコードは次のとおりです.
router.delete('', (req, res, next) => {
User.remove({name: "limsw"})
.then((result) => res.json(result))
.catch((err) => res.json(err));
});
remove()
の因子を条件として、該当するデータを削除します.現在
remove()
deleteリクエストを送信確認できる
![](https://s1.md5.ltd/image/3658f6745b7b49dda7774d98bae96a66.png)
![](https://s1.md5.ltd/image/d473773037f8112f76804ea81ac88d3b.png)
remove()メソッドを使用する際の注意点
条件を指定すると、複数の条件を満たすドキュメントがある場合は、これらのドキュメントはすべて削除されます.
例えば、筆者のデータには、性別が45,67914の文書が100名ある場合、このように条件を設定すると、100個の文書が削除される可能性があるので注意が必要である.
番外-Mongose CRUDfunctions
https://www.geeksforgeeks.org/mongoose-find-function/?ref=lbp
このアドレスの
localhost:3000/user
ラベルページでは、Mongooseが提供するCRUDメソッドと例がよく定義されているので、様々なロジックを記述したい場合は、上記のサイトを参照してください.Reference
この問題について([MongoDB] Node.js mongoseを使ったCRUD), 我々は、より多くの情報をここで見つけました https://velog.io/@limsw/MongoDB-Node.js-mongoose를-이용한-CRUDテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol