根据请求类型更改 collection

Changing the collection based on the request type

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

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 });
}

}

我想根据要求更改 collection 类型。

当请求来自 Grapes url 时,模型(或 collection)应从 OrangeModel[ 更改为 GrapeModel =22=]。如何做到这一点?

如果您希望 POST /Grapes 的行为不同于 POST /Oranges,您可以将控制器附加到两个路径并在代码中评估路径。

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);

我也得到了这样的答案:

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函数