Как передать JSON серверу в NodeJS? - PullRequest
0 голосов
/ 09 мая 2020

Я создаю блог, используя ExpressJS, MongoDB и Quill JS для редактора форматированного текста. Я пытаюсь передать Delta (Quill JS JSON Object серверу через ajax)

$('#submit').click(function() {
  var delta = quill.getContents();
  console.log(delta)
  $.ajax({
    url: 'http://localhost:3000/',
    type: 'POST',
    data: {
      delta: delta
    },
    dataType: "json",
    contentType: "application/json"
  })
})

Вот мой сервер

articleRouter.post('/new', async function(req, res) {
    let article = new Article({
        type: 'blog',
        title: req.body.title,
        hook: req.body.hook,
        content: req.body.delta,
        writer: req.body.writer
    })
    try {
        article = await article.save()
        res.redirect(`read/${article.slug}`)
    } catch (e) {
        console.log(e)
        res.render('index', { page: 'new', article: article, title: 'Create a new article' })
    }
})

и Model

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const slugify = require('slugify')

// Define collection and schema
let Article = new Schema({
    type: {
        type: String,
        required: true,
    },
    title: {
        type: String,
        required: true,
    },
    hook: {
        type: String,
        required: true,
    },
    content: {
        type: Object,
        required: true,
    },
    writer: {
        type: String
    },
    slug: {
        type: String,
        required: true,
        unique: true
    },
    createdAt: {
        type: Date,
        default: Date.now
    }
}, {
    collection: 'article'
})

Article.pre('validate', function(next) {
    if (this.title) {
        this.slug = slugify(this.title, { lower: true, strict: true })
    }
    next()
})

module.exports = mongoose.model('Article', Article)

Я получил эту ошибку

Error [ValidationError]: Article validation failed: content: Path `content` is required.

Я считаю, что AJAX не работает должным образом или я что-то пропустил по адресу:

content: req.body .delta, Как это исправить?

1 Ответ

0 голосов
/ 09 мая 2020

Используете ли вы mon goose для подключения к MongoDB? Если да, проверьте схему Article. Возможно, content является обязательным полем.

...