MongoDB文档命名



我已经尝试了很多次不同的事情,但无法理解,每当我将数据保存到MongoDB时,为什么我得到该文档的名称如下

User.js

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const userSchema = new Schema({
email: {
type: String,
require: true,
unique: true,
lowercase: true,
},
username: {
type: String,
require: true,
unique: true,
maxLength: 7,
},
password: {
type: String,
require: true,
minLength: 8,
},
});
const User = mongoose.model("user", userSchema);
module.exports = User;

当我通过邮差点击API保存数据并在控制台中打印数据时,我收到的数据如下:

email {
_id: new ObjectId("627a4ae94b8958e3fe968311"),
email: 'abc@abc.com',
username: 'fzee07',
password: 'test1234',
__v: 0
}

我的问题是为什么这个对象被保存并命名为"email">.

registerUser.js

const User = require("../../models/User");
const registerUser = async (req, res) => {
const { email, username, password } = req.body;
try {
const e_mail = await User.findOne({});
console.log("email", e_mail);
if (e_mail.email === email) {
res.status(409).json({
success: false,
msg: "User already exists",
});
} else {
if (username.length < 8) {
if (password.length >= 8) {
const user = User.create({ email, username, password });
res.status(201).json({
success: true,
data: "User Created",
});
} else {
res.status(401).json({
success: false,
data: "Password muste be minimum 8 characters",
});
}
} else {
res.status(401).json({
success: false,
data: "Username must be less than 8 characters",
});
}
}
} catch (err) {
console.log(err);
}
};
module.exports = registerUser;

我现在明白这个问题了。很抱歉造成混乱,我误解了你问题的第二部分。你在控制台看到这个的原因:

email {
_id: new ObjectId("627a4ae94b8958e3fe968311"),
email: 'abc@abc.com',
username: 'fzee07',
password: 'test1234',
__v: 0
}

是因为您正在控制台记录字符串"email",然后是数据库中的用户对象,您将其命名为e_mail

将日志信息更改为如下所示:

console.log("user", e_mail);

事实上,你的代码需要一些严格的重构。现在,它不是很好读。这里有一个改进:

const User = require('../../models/User');
const registerUser = async (req, res) => {
const { email, username, password } = req.body;
try {
// Find a user with that email
const user = await User.findOne({ email });
console.log('user', user);
// if it exists, return
if (user) {
res.status(409).json({
success: false,
message: 'User already exists',
});
return;
}
// Validate the username and password
// If validates, create the user
if (username.length < 8 && password.length >= 8) {
const newUser = User.create({ email, username, password });
res.status(201).json({
success: true,
message: 'User created',
data: newUser,
});
return;
}
// If all else fails, return 401
res.status(401).json({
success: false,
message: 'Username must be less than 8 characters & password must be at least 8 characters long',
});
} catch (err) {
res.status(500).json({
success: false,
message: 'Server error',
});
}
};
module.exports = registerUser;

我将data键的所有位置更改为message键,因为消息是值。

我再次建议在Mongoose中间件/钩子中进行验证,而不是在路由中进行验证。

最新更新