๋ด ์ฑ(๋ฉ์ ์ ์ฑ์์ ์ ๋ฉ์์ง๋ฅผ ์
๋ ฅํ๋ฉด ๋ฉ์์ง(๋ฌธ์์ด) ์
๋ ฅ ํ ์ ์ถ์ ํด๋ฆญํ๋ฉด ๋
ธ๋ ์๋ฒ๊ฐ ๋ซํ๊ณ ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์
๋ ฅ ์์์ผ๋ก ์ ์ถํ๋ ์ ๋ฉ์์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ง๋ง. ๊ทธ๋ฆฌ๊ณ ๋
ธ๋ ์๋ฒ๋ฅผ ๋ค์ ์์ํ๋ฉด ๋ํ๋ฉ๋๋ค.
/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongodb/lib/utils.js:132
throw err;
^
RangeError: Maximum call stack size exceeded
at model.Document.$toObject (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/document.js:2058:40)
at model.Document.toJSON (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/document.js:2401:15)
at clone (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/utils.js:164:18)
at cloneObject (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/utils.js:246:11)
at clone (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/utils.js:172:16)
at model.Document.$toObject (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/document.js:2109:13)
at model.Document.toJSON (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/document.js:2401:15)
at clone (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/utils.js:164:18)
at cloneArray (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/utils.js:260:14)
at clone (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/utils.js:159:12)
at cloneObject (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/utils.js:246:11)
at clone (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/utils.js:172:16)
at model.Document.$toObject (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/document.js:2109:13)
at model.Document.toJSON (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/document.js:2401:15)
at clone (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/utils.js:164:18)
at cloneObject (/home/paul/codes/ng2/Seed-MEAN-Feb18-WIP/node_modules/mongoose/lib/utils.js:246:11)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `node ./bin/www`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/paul/.npm/_logs/2018-03-07T12_32_54_826Z-debug.log
๋ด ../models/messages.js์ ๋ด์ฉ
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var User = require('./user');
var schema = new Schema({
content: {type: String, required: true},
user: {type: Schema.Types.ObjectId, ref: 'User'}
});
schema.post('remove', function (message) {
User.findById(message.user, function (err, user) {
user.messages.pull(message);
user.save();
});
});
module.exports = mongoose.model('Message', schema);
์ด ๋ฌธ์ ๋ post
URL์ ํ ํฐ์ ์ถ๊ฐํ๊ธฐ ์ํด ./message/message.service.ts ํ์ผ์ jsonwebtoken์ ๋ํ ์ฝ๋๋ฅผ ์ฝ์
ํ ํ ๋ฐ์ํ๊ธฐ ์์ํ์ต๋๋ค.
addMessage(message: Message) {
const body = JSON.stringify(message);
const headers = new Headers({'Content-Type': 'application/json'});
const token = localStorage.getItem('token')
? '?token=' + localStorage.getItem('token')
: '';
return this.http.post('http://localhost:3000/message' + token, body, {headers: headers})
.map((response: Response) => {
const result = response.json();
const message = new Message(
result.obj.content,
result.obj.user.firstName,
result.obj._id,
result.obj.user._id);
this.messages.push(message);
return message;
})
.catch((error: Response) => Observable.throw(error.json()));
}
ํ๋ก์ ํธ์ ์ ์ฒด ์์ค ์ฝ๋ - ์ ์ฒด ์ฝ๋ ๊ธฐ๋ฐ
node.js, mongoose ๋ฐ MongoDB ๋ฒ์ ์ ์ธ๊ธํ์ญ์์ค.
๋
ธ๋ - v9.3.0
mongodb - ๋ฒ์ v3.6.3
๋ชฝ๊ตฌ์ค - 5.0.9
์๋ ํ์ธ์ @rohan-paul ๋,
๋ฌธ์ ํด๊ฒฐ์ ์ฝ๊ฒ ๋ง๋ค์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ทํ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ณต์ ํ์ผ๋ฉฐ ์๋ํ๋๋ก ๋ณ๊ฒฝํด์ผ ํ๋ 2์ค์ด ์์ต๋๋ค.
InspiredMacPro:rohan lineus$ git diff routes/messages.js
diff --git a/routes/messages.js b/routes/messages.js
index 21996e0..5e3360d 100644
--- a/routes/messages.js
+++ b/routes/messages.js
@@ -45,7 +45,7 @@ router.post('/', function (req, res, next) {
}
var message = new Message({
content: req.body.content,
- user: user
+ user: user._id
});
message.save(function (err, result) {
if (err) {
@@ -55,7 +55,7 @@ router.post('/', function (req, res, next) {
});
}
// Now because, I am connecting user with message, I have to save messages array in user model.
- user.messages.push(result);
+ user.messages.push(result._id);
user.save();
res.status(201).json({
message: 'Saved message',
์ด๋ฌํ ๋ณ๊ฒฝ์ ์ํํ ํ* ์ถฉ๋ ์์ด ๋ฉ์์ง๋ฅผ ์ถ๊ฐํ ์ ์์์ต๋๋ค.
ts์ ๋ํ ์๋ฏธ์๋ ๊ฒฝํ์ด์๊ณ npm install์์ ์ผ๋ถ ts ํจํค์ง์ ๋ค์ดํฐ๋ธ ์ปดํ์ผ์ ๋ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ts๋ฅผ ํ์ง ์๊ณ js๋ฅผ ํธ์งํ์ต๋๋ค. ๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ผ dbs
๊ด๋ฆฌ์ 0.078GB
๊ตฌ์ฑ 0.078GB
๋ก์ปฌ 0.078GB
๋ชฝ๊ตฌ์ค_ํ ์คํธ 0.203GB
๋ ธ๋ ๊ฐ 0.078GB
ํ ์คํธ 0.078GB
๋ ธ๋ ๊ฐ๋ ์ฌ์ฉ
db ๋ ธ๋ ๊ฐ๋๋ก ์ ํ
์ปฌ๋ ์ ๋ณด์ฌ์ฃผ๊ธฐ
๋ฉ์์ง
์์คํ .์ธ๋ฑ์ค
์ฌ์ฉ์
db.users.find().pretty()
{
"_id": ObjectId("5a9ff3800f2abba5379e8e93"),
"firstName": "ํ๋ฆฌํผ",
"์ฑ": "๋งฅ๋๊ฐ",
"๋น๋ฐ๋ฒํธ" : "$2a$10$J5H/BEKxik2SOt1b/vxWgOQIdNEERynejS7n6okj6JHTfhO/DySSG",
"์ด๋ฉ์ผ" : " [email protected] ",
"๋ฉ์์ง": [
๊ฐ์ฒด ID("5a9ff4fe079501a615a5f6ff"),
ObjectId("5a9ff5d654a45ba796525206")
],
"__v" : 2
}
์๋ ํ์ธ์ @lineus - ์ ์๋ํฉ๋๋ค.. ์ ๋ง ๊ฐ์ฌํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์ @rohan-paul ๋,
๋ฌธ์ ํด๊ฒฐ์ ์ฝ๊ฒ ๋ง๋ค์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ทํ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ณต์ ํ์ผ๋ฉฐ ์๋ํ๋๋ก ๋ณ๊ฒฝํด์ผ ํ๋ 2์ค์ด ์์ต๋๋ค.
์ด๋ฌํ ๋ณ๊ฒฝ์ ์ํํ ํ* ์ถฉ๋ ์์ด ๋ฉ์์ง๋ฅผ ์ถ๊ฐํ ์ ์์์ต๋๋ค.
ts์ ๋ํ ์๋ฏธ์๋ ๊ฒฝํ์ด์๊ณ npm install์์ ์ผ๋ถ ts ํจํค์ง์ ๋ค์ดํฐ๋ธ ์ปดํ์ผ์ ๋ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ts๋ฅผ ํ์ง ์๊ณ js๋ฅผ ํธ์งํ์ต๋๋ค. ๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.