首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据请求类型更改集合

根据请求类型更改集合
EN

Stack Overflow用户
提问于 2021-09-16 02:53:45
回答 2查看 41关注 0票数 0

此控制器接受表单并更新数据。

代码语言:javascript
复制
export const createPost = async (req, res) => {
const { title, message, selectedFile, creator, tags } = req.body;

const newPostMessage = new OrangeModel ({ title, message, selectedFile, creator, tags })

try {
    await newPostMessage.save();

    res.status(201).json(newPostMessage );
} catch (err) {
    res.status(409).json({ message: err.message });
}

}

我想根据请求更改集合类型。

当请求来自Grapes时,模型(或集合)应该从GrapeModel改为OrangeModel。怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-25 06:59:37

如果希望POST /Grapes的行为与POST /Oranges不同,则可以将控制器附加到两个路径并计算代码中的路径。

代码语言:javascript
复制
const createPost = async (req, res) => {
  let newPostMessage;
  if (req.path === "/Oranges") newPostMessage = new OrangeModel(...);
  else if (req.path === "/Grapes") newPostMessage = new GrapeModel(...);
  try {
    await newPostMessage.save();
  ...
};
app.post(["/Oranges", "/Grapes"], createPost);
票数 1
EN

Stack Overflow用户

发布于 2021-10-13 15:25:48

我也得到了这样的答案:

代码语言:javascript
复制
exports.createPost =Model=> async (req, res) => {
  try {
    const doc = await Model.create(req.body, {
      new: true,
      runValidators: true,
    });
    res.status(200).json({
      status: 'success',
      data: {
        doc,
      },
    });
  } catch (error) {
    res.status(400).json({
      status: 'fail',
      message: error,
    });
  }
};

这里只需使用模型名调用createPost函数即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69201813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档