javascript - 当我尝试保存在 MongoDB 中时,.then 未定义
问题描述
我是 node.js 的新手。我收到了这条消息:
TypeError: Cannot read property 'then' of undefined
这是代码:
router.post("/signup", (req, res) => {
const userRegister = new UserRegister({
_id: new mongoose.Types.ObjectId(),
nickname: req.body.nickname,
email: req.body.password,
password: req.body.password,
level: 0
});
console.log(req.body.nickname + " " + req.body.email + " " + req.body.password);
userRegister
.save()
.then(doc => {
console.log(doc);
res.status(200).json({
message: "User created"
});
})
.catch(err => {
if (err)
console.log("error => " + err)
res.status(409).json({
message: "ERROR"
})
});
});
和架构:
const mongoose = require("mongoose");
const userRegister = mongoose.Schema({
_id : mongoose.Schema.Types.ObjectId,
nickname: String,
email: String,
password: String,
level: Number
});
module.exports = mongoose.model("UserRegister", userRegister);
我真的不明白为什么它说“.then undefined”。(身体很好)
解决方案
似乎函数“保存”不返回 Promise。但在源代码中它确实...... https://github.com/Automattic/mongoose/blob/master/lib/model.js#L385
您也可以尝试“创建”方法。
https://github.com/Automattic/mongoose/blob/master/lib/model.js#L2646
也许它会很糟糕:
const result = new SomeModel({...});
new Promise((resolve, reject) => {
// Save model
result.save(err => {
if (err) {
return reject(new Error(`Error with exam ersult save... ${err}`));
}
// Return saved model
return resolve(result);
})
.then(res => {
return res;
})
.catch(err => {
throw new Error(err);
});
推荐阅读
- gcc - 错误:'::acos' 尚未使用 ::acos 声明;
- sql-server - VM 上的 Azure SQL Server 可以作为生产数据库吗?
- r - 两列数据的部分匹配
- machine-learning - 我可以用 automl 中的评估选项卡做多少
- c# - .net core CodePagesEncodingProvider.Instance 不添加任何编码
- python - 将 MS Power BI 与 Python / Django 集成
- rabbitmq - 从 3.5.x 升级到最新版本
- jquery - getJSON & Bearer 令牌
- parsing - 从 url 的资源中提取键、值参数
- json - 使用带有 Youtube Analytics 的 Swift 4 解码 JSON 以获取嵌套的无键数组