Mongoose .save() 返回空错误对象,不保存在数据库中
Posted
技术标签:
【中文标题】Mongoose .save() 返回空错误对象,不保存在数据库中【英文标题】:Mongoose .save() returns empty error object, does not save in DB 【发布时间】:2021-05-29 21:26:54 【问题描述】:我正在尝试学习 MongoDB 和 typescript,但目前在尝试创建我的第一个文档时遇到了一些问题。
当我从邮递员发出 post 请求时,我收到“Sending request” 5 秒,然后它超时并返回一个空的错误对象:
"message":
并且发布的数据没有保存在我的 mongoDB 中。
我首先在我的服务器中设置这样的连接:
mongoose.connect(<string> process.env.DB_CONNECTION, useNewUrlParser: true, () =>
console.log("connected to DB!")
);
并取回记录的正确语句,因此我已连接。
我有一个看起来像这样的模型:
import model, Schema, Model, Document from "mongoose";
export interface IUser extends Document
name: string,
const UserSchema: Schema = new Schema(
name:
type: Schema.Types.String,
required: true,
,
,
<any> timeStamps: true
);
const User: Model<IUser> = model<IUser>('User', UserSchema);
export default User;
问题可能就在那里,但我认为不是。
然后,这是我对我调用的端点的发布请求:
router.post('/add', async (req: Request, res: Response): Promise<any> =>
try
const user: IUser = new User(
name: req.body.name
);
const savedUser: IUser = await user.save();
res.status(200).json(savedUser);
catch (err: any)
res.status(500).json(message: err);
console.log("There was an error");
)
这是我认为每次请求都停留在等待 .save() 时出现错误的地方
任何帮助都会很棒!谢谢!
【问题讨论】:
您正在等待name.save()
,但模型的变量名为game
@MontgomeryWatts 我的错误。我正在等待 user.save(),但我在写问题时写错了变量。我编辑了代码以修复此更改。
您能否确认您已正确连接到 MongoDB? mongoose.connect 函数可以进行回调,您可以在其中检查是否发生错误。
你说得对,连接有问题。我相信我的密码引起了问题,因为其中有特殊字符并且我没有对它们进行编码。非常感谢你的帮助。输入一个答案,我会改正的。
【参考方案1】:
问题在于初始数据库连接,密码包含未编码的字符。编码特殊字符的一种解决方案是使用内置的encodeURIComponent() 函数。
【讨论】:
以上是关于Mongoose .save() 返回空错误对象,不保存在数据库中的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose populate() 返回没有错误的空数组
无法使用 mongoose Model.save() 保存 - 给出内部服务器错误