最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

未通过调用Mongoose Create()函数保存文档

运维笔记admin5浏览0评论

未通过调用Mongoose Create()函数保存文档

未通过调用Mongoose Create()函数保存文档

我有一些代码来生成用户配置文件,然后尝试使用Mongoose的create()函数将此配置文件保存到数据库中。无论出于什么原因,这都不起作用。看来我的用户配置文件数据未成功传递到控制器中的add()功能。我不清楚为什么会这样。

首先,这是我控制器的add()函数:

exports.add = async ({
  data = {}
} = {}) => {
  console.log('data: ', data);
  return User.create(data);
};

这是上述功能的路线信息:

router.post('/', async ctx => {
  const data = ctx.request.body;
  console.log('data: ', data);
  const user = await controller.add({
    data
  });
  ctx.body = user;
});

这是我在其中调用此函数的代码的相关部分:注意,我确实看到console.log数据行正在运行,所以我知道该函数正在被调用。但是无论出于什么原因,即使我通过了用户文档的JSON版本,data仍然是一个空对象(默认值):

  let formattedUser = new User();

  formattedUser = JSON.stringify(userProfile);

  console.log('formattedUser: ', formattedUser); // I see this in my console

  try {
    let createdUser = await UserCtlr.add(formattedUser);
    console.log('createdUser: ', createdUser); // this DOES NOT print to the console
  } catch (error) {
    console.log(error);
  }

我很困惑,因为在将formattedUser传递给add()功能之前,我可以看到它已打印到控制台。但是add()函数似乎仅在运行时包含一个空对象(默认值)。顺便说一句,即使我将其封装在try / catch中,也不会收到任何错误。

[另一个说明,我可以成功使用Postman调用此add()函数并将用户保存到数据库。所以我不清楚为什么我以编程方式调用它时不起作用。我在这里想念什么?

回答如下:

在控制器文件中,您将返回从用户模式创建的对象,但未将该对象保存到数据库中。请尝试返回以下内容:

User.create(data).save();
发布评论

评论列表(0)

  1. 暂无评论