質問編集履歴

2

誤字の修正

2020/08/06 01:18

投稿

Taka-M
Taka-M

スコア3

test CHANGED
File without changes
test CHANGED
@@ -166,8 +166,6 @@
166
166
 
167
167
  console.log('挿入する中身は', req.body);
168
168
 
169
- User.count = 1;
170
-
171
169
  User.accountnumber = req.body.accountnumber;
172
170
 
173
171
  User.membername = req.body.membername;

1

API呼び出し部分のロジックを追記

2020/08/06 01:18

投稿

Taka-M
Taka-M

スコア3

test CHANGED
@@ -1 +1 @@
1
- moogose+node.jsを使用したjsonAPIのレスポンス内容を編集したい
1
+ node.js+express+moogoseを使用したjsonAPIのレスポンス内容を編集したい
test CHANGED
@@ -64,116 +64,186 @@
64
64
 
65
65
 
66
66
 
67
+ ```userModel
68
+
69
+ var mongoose = require('mongoose');
70
+
71
+ var Schema = mongoose.Schema;
72
+
73
+
74
+
75
+ var UserSchema = new Schema({
76
+
77
+ accountnumber: { type: String, require: true, unique: true },
78
+
79
+ membername: { type: String, require: true },
80
+
81
+ department: { type: String, require: true },
82
+
83
+ mail: { type: String, require: true },
84
+
85
+ password: { type: String, require: true },
86
+
87
+ date: { type: Date, default: Date.now }
88
+
89
+ });
90
+
91
+
92
+
93
+ module.exports = mongoose.model('User', UserSchema);
94
+
95
+ ```
96
+
97
+ ```response
98
+
99
+ [
100
+
101
+ {
102
+
103
+ "_id": "5f2a09e02632db5bde8562db",
104
+
105
+ "date": "2020-08-05T01:22:40.473Z",
106
+
107
+ "accountnumber": "102226",
108
+
109
+ "membername": "huga",
110
+
111
+ "department": "AAA",
112
+
113
+ "mail": "test@example.com",
114
+
115
+ "password": "asdfgh",
116
+
117
+ "__v": 0
118
+
119
+ },
120
+
121
+ {
122
+
123
+ "_id": "5f2a09ea2632db5bde8562dd",
124
+
125
+ "date": "2020-08-05T01:22:50.696Z",
126
+
127
+ "accountnumber": "222222",
128
+
129
+ "membername": "foo",
130
+
131
+ "department": "BBB",
132
+
133
+ "mail": "test@example.com",
134
+
135
+ "password": "xsw23edc",
136
+
137
+ "__v": 0
138
+
139
+ }
140
+
141
+ ]
142
+
143
+ ```
144
+
145
+
146
+
147
+ また、API呼び出し部分のロジックの抜粋は下記です。
148
+
149
+ ```nodejs
150
+
151
+ var express = require('express');
152
+
153
+ var router = express.Router();
154
+
155
+ var UserModel = require('../../userModel.js');
156
+
157
+
158
+
159
+ router.route('/')
160
+
161
+ .post(async (req, res) => {
162
+
163
+ var User = new UserModel();
164
+
165
+
166
+
167
+ console.log('挿入する中身は', req.body);
168
+
169
+ User.count = 1;
170
+
171
+ User.accountnumber = req.body.accountnumber;
172
+
173
+ User.membername = req.body.membername;
174
+
175
+ User.department = req.body.department;
176
+
177
+ User.mail = req.body.mail;
178
+
179
+ User.password = req.body.password;
180
+
181
+
182
+
183
+ await User.save()
184
+
185
+ .then(result => {
186
+
187
+ res.json({ message: '1件のmember情報登録しました!!' });
188
+
189
+ console.log("1件のmember情報登録しました");
190
+
191
+ })
192
+
193
+ .catch(err => {
194
+
195
+ res.send(err)
196
+
197
+ console.error(err)
198
+
199
+ })
200
+
201
+ })
202
+
203
+ ```
204
+
205
+ 「実現したいこと」に記載したように、
206
+
207
+ データ内の件数を取得して"count"として出力、
208
+
209
+ レスポンスされるデータを"user"[{}]で囲みたいのですが、どのように実現すればよいかご教示いただけないでしょうか。
210
+
211
+
212
+
213
+
214
+
215
+ ### 試したこと
216
+
217
+ スキーマの定義を以下のように変更してみましたが、意図したレスポンスにはならずでした。
218
+
219
+ 例えば、"count"はスキーマに含めず、アプリ側のロジック(mongoDBからcountDocumentsで取得して、レスポンスに組み込む)として実装すべきなのでしょうか?
220
+
67
221
  ```schema
68
222
 
69
223
  var UserSchema = new Schema({
70
224
 
225
+ count:Number,
226
+
227
+ user[{
228
+
71
- accountnumber: { type: String, require: true, unique: true },
229
+ accountnumber: { type: String, require: true, unique: true },
72
-
230
+
73
- membername: { type: String, require: true },
231
+ membername: { type: String, require: true },
74
-
232
+
75
- department: { type: String, require: true },
233
+ department: { type: String, require: true },
76
-
234
+
77
- mail: { type: String, require: true },
235
+ mail: { type: String, require: true },
78
-
236
+
79
- password: { type: String, require: true },
237
+ password: { type: String, require: true },
80
-
238
+
81
- date: { type: Date, default: Date.now }
239
+ date: { type: Date, default: Date.now }
240
+
241
+ }]
82
242
 
83
243
  });
84
244
 
85
245
  ```
86
246
 
87
- ```response
88
-
89
- [
90
-
91
- {
92
-
93
- "_id": "5f2a09e02632db5bde8562db",
94
-
95
- "date": "2020-08-05T01:22:40.473Z",
96
-
97
- "accountnumber": "102226",
98
-
99
- "membername": "huga",
100
-
101
- "department": "AAA",
102
-
103
- "mail": "test@example.com",
104
-
105
- "password": "asdfgh",
106
-
107
- "__v": 0
108
-
109
- },
110
-
111
- {
112
-
113
- "_id": "5f2a09ea2632db5bde8562dd",
114
-
115
- "date": "2020-08-05T01:22:50.696Z",
116
-
117
- "accountnumber": "222222",
118
-
119
- "membername": "foo",
120
-
121
- "department": "BBB",
122
-
123
- "mail": "test@example.com",
124
-
125
- "password": "xsw23edc",
126
-
127
- "__v": 0
128
-
129
- }
130
-
131
- ]
132
-
133
- ```
134
-
135
- 「実現したいこと」に記載したように、
136
-
137
- データ内の件数を取得して"count"として出力、
138
-
139
- レスポンスされるデータを"user"[{}]で囲みたいのですが、どのように実現すればよいかご教示いただけないでしょうか。
140
-
141
-
142
-
143
-
144
-
145
- ### 試したこと
146
-
147
- スキーマの定義を以下のように変更してみましたが、意図したレスポンスにはならずでした。
148
-
149
- 例えば、"count"はスキーマに含めず、アプリ側のロジック(mongoDBからcountDocumentsで取得して、レスポンスに組み込む)として実装すべきなのでしょうか?
150
-
151
- ```schema
152
-
153
- var UserSchema = new Schema({
154
-
155
- count:Number,
156
-
157
- user[{
158
-
159
- accountnumber: { type: String, require: true, unique: true },
160
-
161
- membername: { type: String, require: true },
162
-
163
- department: { type: String, require: true },
164
-
165
- mail: { type: String, require: true },
166
-
167
- password: { type: String, require: true },
168
-
169
- date: { type: Date, default: Date.now }
170
-
171
- }]
172
-
173
- });
174
-
175
- ```
176
-
177
247
 
178
248
 
179
249