Я хочу добавить документ в свою коллекцию БД только после проверки всех req.query похожих на мои IGroupDocument на контроллере перед вставкой.
Какова наилучшая практика для этого?
IGroupDocument:
import { Document, Model } from "mongoose";
export interface IGroup {
firstName: string;
lastName: string;
age?: number;
email: string,
dateOfEntry?: Date;
}
export interface IGroupDocument extends IGroup, Document {}
Контроллер:
function create(req: Request, res: Response) {
// req.query validation: if firstName, lastName and email exist and type string, and then make a document from req.query call newGroup.
GroupModel.create(newGroup)
res.send(`${req.query.name} created`)
}
Извините, я исправил вопрос. теперь более понятно
Ну нет. Вы даже не включили код, в котором хотите хранить что-либо в БД. Вы также не включили код, связанный с IGroupDocument. Вы даже не включили то, что вообще нужно проверять. Нужно ли проверять, что какой-то параметр запроса является строкой, имеет определенную длину и т. д.?
Спасибо за внимание! теперь более понятно?






Вы можете прочитать параметры запроса из объекта запроса следующим образом:
const { firstName, lastName, email } = req.query;
Затем вы можете передать эти параметры запроса в функцию создания документа, например:
GroupModel.create({firstName, lastName, email});
Проверка должна принимать участие в вашей схеме мангуста. Поскольку вы его не включили, я сам создал образец схемы:
const groupSchema = new Schema({
firstName: { type: String, required: true },
lastName: { type: String, required: true},
email: { type: String, required: true }
})
Заметки:
POST.res.send('${req.query.name} created') сразу после вызова функции create. Это возвращает обещание, которое следует ожидать. Вы можете просто использовать await GroupModel.create(...) и определить функцию как async.req.query.name в свой ответ, который является параметром запроса, который даже не использовался раньше. Вероятно, вам следует использовать свойство из значения обещания awaited.
Вы должны хотя бы предоставить нам пример кода, чтобы увидеть, с чем именно вы сейчас боретесь. Вы используете простой javascript с библиотекой мангуста? Вы хотите выполнить проверку на уровне контроллера или на уровне схемы?