当我尝试创建用户时,上面的查询返回200,但是每当我登录MongoDB时,都不会创建任何集合。有人可以帮忙吗?
//用户模型
const userSchema = mongoose.Schema({
name: {
type : String,
required : true,
trim : true
},
email: {
type: String,
required: true,
unique: true,
lowercase: true,
validate: value => {
if(!validator.isEmail(value)){
throw new Error({error : 'Invalid email address'})
}
}
},
password: {
type: String,
required: true,
minLength: 5
},
// a user can have multiple jobs
jobs : [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Job'
}],
tokens: [{
token: {
type: String,
required: true
}
}]
})
const User = mongoose.model('User', userSchema)
module.exports = User
//编写的用户功能
createUser(name, email, password){
return User.create({name: name, email: email, password : password}, (err, docs) => {
if(err){
throw err.message;
}
});
}
// routes.js
// user create
router.post('/users', async(req, res) => {
try{
const {name, email, password } = req.body
const user = userManager.createUser(name, email, password); [1]
res.status(200).json(user)
}
catch(error) {
res.status(400).send({error : error.message})
}
})
第[1]行返回未定义。为什么呢 注意:满足所有模块要求
答案 0 :(得分:0)
创建schema
后,您需要创建一个 FROM 模型。
来自MDN的示例:
// Define schema
var Schema = mongoose.Schema;
var SomeModelSchema = new Schema({
a_string: String,
a_date: Date
});
// Compile model from schema
var SomeModel = mongoose.model('SomeModel', SomeModelSchema );
现在,在创建模型之后,您可以使用SomeModel.create
编辑:
line[1]
将始终返回未定义的状态,因为您正在使用callbacks
,从回调中获取价值的唯一方法是推送另一个回调(我真的不建议这样做)。但是最好的方法是使用Promises
,现在猫鼬默认支持`Promises。因此,基本上就是希望,
// user functions written
async function createUser(name, email, password){
try {
return await User.create({ name: name, email: email, password: password });
} catch (err) {
throw err.message;
}
}
在路由器地址await
中:
const user = await userManager.createUser(name, email, password);