No meu aplicativo (um aplicativo de messenger, quando eu entro na nova mensagem, na entrada da mensagem (string) e clico em enviar, o servidor do nó fecha dando-me o erro abaixo
Embora a nova mensagem que estou enviando no formulário de entrada seja salva no banco de dados. E quando eu reinicio o servidor do nó, ele aparece.
/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
O conteúdo em meu ../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);
Esse problema começou a acontecer depois que eu inseri o código para jsonwebtoken no arquivo ./message/message.service.ts para adicionar o token ao meu post
url
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()));
}
O código-fonte completo do projeto - Base de código completa
Mencione sua versão node.js, mongoose e MongoDB.
nó - v9.3.0
mongodb - versão v3.6.3
mangusto - 5.0.9
Olá @ rohan-paul,
obrigado por facilitar a resolução de problemas. Clonei seu repo e há 2 linhas que precisam ser alteradas para que funcione:
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',
depois de fazer essas alterações *, consegui adicionar mensagens sem travar.
Não tenho nenhuma experiência significativa com ts e recebi um erro no npm install sobre a compilação nativa de alguns dos pacotes ts, então apenas editei o js sem me aprofundar em ts. espero que isto ajude.
mostrar dbs
admin 0,078 GB
config 0,078 GB
0,078 GB local
mongoose_test 0,203 GB
nó-angular 0,078 GB
teste 0,078 GB
usar nó-angular
mudou para db node-angular
mostrar coleções
mensagens
system.indexes
Comercial
db.users.find (). pretty ()
{
"_id": ObjectId ("5a9ff3800f2abba5379e8e93"),
"firstName": "flippy",
"lastName": "mcdoogal",
"senha": "$ 2a $ 10 $ J5H / BEKxik2SOt1b / vxWgOQIdNEERynejS7n6okj6JHTfhO / DySSG",
"email": " [email protected] ",
"mensagens": [
ObjectId ("5a9ff4fe079501a615a5f6ff"),
ObjectId ("5a9ff5d654a45ba796525206")
],
"__v": 2
}
Olá @lineus - Isso funciona muito bem .. muito obrigado ..
Comentários muito úteis
Olá @ rohan-paul,
obrigado por facilitar a resolução de problemas. Clonei seu repo e há 2 linhas que precisam ser alteradas para que funcione:
depois de fazer essas alterações *, consegui adicionar mensagens sem travar.
Não tenho nenhuma experiência significativa com ts e recebi um erro no npm install sobre a compilação nativa de alguns dos pacotes ts, então apenas editei o js sem me aprofundar em ts. espero que isto ajude.