![](/img/trans.png)
[英]toObject is not a function error while converting mongoose object
[英]toObject is not a function error in mongoose
這是 filesPost 控制器文件。 在這里,我從 MongoDB 中獲取所有數據,並將數據推送到那里。 該函數在不登錄控制台userInfo的情況下運行良好,但是當我嘗試將其登錄到控制台時,它給出了userInfo.toObject({getters: true})不是函數的錯誤。 我試過 toJSON() 但我得到了同樣的錯誤。
const { validationResult } = require("express-validator");
const HttpError = require("../models/http-error");
const File = require("../models/file");
const User = require("../models/user");
const getFilesByUserId = async (req, res, next) => {
const userId = req.params.uid;
let filePosts;
try {
filePosts = await File.find({ creator: userId });
} catch (err) {
return next(new HttpError("Fetching failed, please try again.", 500));
}
const userInfo = User.findById(userId);
if (!filePosts || filePosts.length === 0) {
return next(
new HttpError("Could not find files for the provided user id.", 404)
);
}
console.log(userInfo.toObject({ getters: true }));
res.json({
filePosts: filePosts.map((file) => file.toObject({ getters: true })),
});
};
在您的異步函數中,即使對User.findById(userId)
的調用未完成,您的代碼也會繼續。 您可以使用await
語句來確保函數在您的代碼繼續運行之前已經運行。
如果您更改const userInfo = User.findById(userId);
您的代碼應該可以工作至
const userInfo = await User.findById(userId);
有關更多信息,這里是 async/await 文檔: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
只需要添加等待。
const userInfo = await User.findById(userId);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.