Как я могу обрезать пробелы между словами в мангусте для моей БД? Представим себе случай `

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/TodoApp', { useNewUrlParser: true });

const Todo = mongoose.model('Todo', {
  text: {
    type: String,
    required: true,
    minlength: 1,
    trim: true
  }
});

const newTodo = new Todo({
  text: "   Cook     dinner   "
});

newTodo .save().then((doc) => {
  console.log('Saved todo', doc)
}).catch((e) => {
  console.log(e);
});

Если я запустил этот код, я получу документ в своей базе данных, где текстовое значение равно`

"Cook     dinner"

Но вместо этого я хотел бы получить

"Готовить обед"

Как я могу получить такой результат только с мангустом?

1
Norayr Ghukasyan 25 Ноя 2018 в 22:25

1 ответ

Лучший ответ

Пожалуйста, проверьте определение trim() в документации, похоже, вы пытаетесь удалить ненужные символы в середине строки, но trim() удаляет их только в начале и в конце строки ( Mongo docs)

Я предлагаю вам определить собственный setter (doc) или preSave (doc) для этого и преобразовать строку с помощью регулярного выражения ( если вы хотите удалить только пробелы): str.replace( /\s\s+/g, ' ' )

2
morozRed 25 Ноя 2018 в 20:38