Mongoose: RangeError: Ukuran tumpukan panggilan maksimum terlampaui saat memperbarui data ke database setelah menambahkan jsonwebtoken di url

Dibuat pada 7 Mar 2018  ·  3Komentar  ·  Sumber: Automattic/mongoose

Di Aplikasi saya (Aplikasi messenger, ketika saya memasukkan pesan baru, dalam input pesan (string), dan klik kirim, server simpul ditutup memberi saya kesalahan di bawah ini
Meskipun pesan baru yang saya kirimkan dalam formulir input disimpan dalam database. Dan ketika saya me-restart server node, itu muncul.

/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

Konten di ../models/messages.js my saya

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);

Masalah ini mulai terjadi setelah saya memasukkan kode untuk jsonwebtoken di file ./message/message.service.ts untuk menambahkan token ke url post

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()));
    }

Kode sumber lengkap proyek - Basis kode lengkap

Sebutkan versi node.js, luwak, dan MongoDB Anda.
simpul - v9.3.0
mongodb - versi v3.6.3
luwak - 5.0.9

Komentar yang paling membantu

Hai @rohan-paul,

terima kasih telah membuat pemecahan masalah ini mudah. Saya mengkloning repo Anda dan ada 2 baris yang perlu diubah untuk membuatnya berfungsi:

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',

setelah melakukan perubahan ini* saya dapat menambahkan pesan tanpa crash.
Saya tidak memiliki pengalaman yang berarti dengan ts, dan saya mendapat kesalahan pada npm install tentang kompilasi asli beberapa paket ts, jadi saya hanya mengedit js tanpa menggali ke dalam ts. semoga ini membantu.

Semua 3 komentar

Hai @rohan-paul,

terima kasih telah membuat pemecahan masalah ini mudah. Saya mengkloning repo Anda dan ada 2 baris yang perlu diubah untuk membuatnya berfungsi:

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',

setelah melakukan perubahan ini* saya dapat menambahkan pesan tanpa crash.
Saya tidak memiliki pengalaman yang berarti dengan ts, dan saya mendapat kesalahan pada npm install tentang kompilasi asli beberapa paket ts, jadi saya hanya mengedit js tanpa menggali ke dalam ts. semoga ini membantu.

tampilkan dbs
admin 0,078 GB
konfigurasi 0,078 GB
lokal 0,078 GB
luwak_test 0.203GB
simpul-sudut 0,078GB
uji 0,078 GB
gunakan simpul-sudut
beralih ke db node-angular
menunjukkan koleksi
pesan
system.indexes
pengguna
db.users.find().cantik()
{
"_id" : ObjectId("5a9ff3800f2abba5379e8e93"),
"namadepan" : "flippy",
"nama belakang" : "mcdoogal",
"sandi" : "$2a$10$J5H/BEKxik2SOt1b/vxWgOQIdNEERynejS7n6okj6JHTfhO/DySSG",
"email" : " [email protected] ",
"pesan" : [
ObjectId("5a9ff4fe079501a615a5f6ff"),
ObjectId("5a9ff5d654a45ba796525206")
],
"__v" : 2
}

Hai @lineus - Itu berfungsi dengan baik.. terima kasih banyak..

Apakah halaman ini membantu?
0 / 5 - 0 peringkat