【发布时间】:2019-10-19 15:26:14
【问题描述】:
有一个用户模型和app.js,
在 app.js 中,我们对 user.save() 有一个捕获,它会在控制台中引发错误:
TypeError: Cannot read property 'catch' of undefined
用户模型:
const Schema = mongoose.Schema
const UserSchema = new Schema({
email: {
type: String,
required: true,
unique: true,
trim: true,
minLength: 3
},
password: {
type: String,
required: true,
minLength: 5
}
})
module.exports = mongoose.model( 'users', UserSchema )
app.js 文件:
const mongoose = require( 'mongoose')
mongoose.Promise = global.Promise
const bcrypt = require( 'bcryptjs')
const User = require('./models/User')
const express = require('express')
const app = express()
const bodyParser = require('body-parser')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.listen( 4111, () => {
console.log( 'listening on 4111 ...' )
})
mongoose.connect( 'mongodb://127.0.0.1/login', () => {
console.log( 'Connected ! ')
})
app.post('/register', ( req, res ) => {
let newUser = new User()
newUser.email = req.body.email || 'gmail'
newUser.password = req.body.password || 1234
// res.send( newUser )
bcrypt.genSalt( 10, salt => {
bcrypt.hash( req.body.password, salt, ( err, hash ) => {
if( err ) return err
newUser.password = hash
newUser.save().then( savedUser => {
res.send( 'The user saved: ', savedUser )
}).catch( (err) => {
res.send( 'The user was not saved : ', err )
})
})
} ).catch( err => {
res.send( 'gen salt err :', err )
})
})
我在这里看到了一些类似的问题,但与这个不同。
【问题讨论】:
-
这是因为您没有从函数返回任何内容。 .catch 只能用于承诺
-
@GaneshKarewad tnx 为答案,但我为 app.js 这样做了,现在 POSTMAN 没有响应并说:正在加载......我还替换了内部然后......用 try.. .catch 但结果是相同的加载循环
标签: node.js promise model try-catch typeerror