Мангуста не сбрасывает, не выдает ошибку - PullRequest
0 голосов
/ 14 марта 2019

Моя модель мангуста (приложение node / express) не сохраняет и не выдает ошибку, и я не знаю, почему ...

Вот моя модель. В нем есть сообщение, ссылающееся на множество комментариев по ID схемы:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var CommentSchema = new Schema({
  body: {type: String, required: true, max: 2000},
  created: { type: Date, default: Date.now },
  flags: {type: Number, default: 0}
}, {
  writeConcern: {
    w: 0,
    j: false,
    wtimeout: 200
  }  
});

var PostSchema = new Schema({
  body: {type: String, required: true, max: 2000},
  created: { type: Date, default: Date.now },
  flags: {type: Number, default: 0},
  comments: [{ type: Schema.Types.ObjectId, ref: 'Comment' }]
}, {
  writeConcern: {
    w: 0,
    j: false,
    wtimeout: 200
  }  
});

var Post =  mongoose.model('Post', PostSchema);
var Comment = mongoose.model('Comment', CommentSchema)

module.exports = {
  Post: Post,
  Comment: Comment
} 

Вот мой маршрут. Он просто создает сообщение из входящего тела и пытается сохранить его. Он ссылается на экспортированный пост model.Post, так как экспортированный модуль является объектом.

var express = require('express');
var router = express.Router();
const fs = require('fs');
var model = require('../models/model');

router.post('/uploadPost', (req, res, next)=>{
  console.log('inside /uploadPost')
  console.log('value of req.files: ', req.files)
  console.log('value of req.body: ', req.body)

  var post = {
    body: req.body.post, 
    created: Date.now(),
    flags: 0, 
    comments: []
  }

  console.log('value of post: ', post)

  let postInstance = new model.Post(post)

  console.log('value of postInstance: ', postInstance)

  postInstance.save().then(post=>{
    console.log('value of post: ', post)
  }).catch( (e) => {
    console.log('There was an error', e.message);
  });

  res.json({return: 'return from /uploadPost'})
})

module.exports = router;

А вот и мой вывод на терминал. Он управляет console.log всем, за исключением либо обратного вызова save, либо ошибки. Я подумал, что это могло быть состояние гонки с res.json, поэтому я добавил это в обратный вызов, но это тоже ничего не дало. Что происходит?

value of req.body:  { post: 'lkjlkjlk' }
value of post:  { body: 'lkjlkjlk',
  created: 1552587547653,
  flags: 0,
  comments: [] }
value of postInstance:  { flags: 0,
  comments: [],
  _id: 5c8a9b1ba7cece70037d3f46,
  body: 'lkjlkjlk',
created: 2019-03-14T18:19:07.653Z }

РЕДАКТИРОВАТЬ:

Я неправильно подключился к мангусту ... вздох.

Вот правильный код подключения (выше, то правильно):

mongoose.connect("mongodb://localhost:27017/mydb");
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
db.once('open', function() {
  // we're connected!
  console.log('connected to mongoose db')
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...