未通过调用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();