Ich war meine Benutzer API erstellen, möchte ich überprüfen, ob der Benutzername verwendet wurde. Also schrieb ich eine statische FunktionMungo Frage Versprechen in Funktion machen Code wurde hässlich
static findByName(name) {
const query = User.where({
username: name,
});
query.findOne((queryErr, user) => {
if (queryErr) {
console.log(queryErr);
return false;
}
return user;
});
}
, wenn ich es in SIGNUP
signup(req, res) {
if (!req.body.username || !req.body.password || !req.body.email) {
return res.status(400).json({ success: false, message: 'Bad Request' });
}
if (!Users.findByName(req.body.username)) {
return res.status(409).json({ success: false, message: 'Username has been used' });
}
const hashedPassword = this.genHash(req.body.password);
const newUser = User({
username: req.body.username,
});
}
genannt
findByName undefiniert zurück. Schließlich verwende ich Versprechen.
signup(req, res) {
if (!req.body.username || !req.body.password || !req.body.email) {
return res.status(400).json({ success: false, message: 'Bad Request' });
}
return Users.findByName(req.body.username).then((existingUser) => {
if (existingUser) {
return res.status(409).json({ success: false, message: 'Username has been used' });
}
const hashedPassword = this.genHash(req.body.password);
const newUser = User({
username: req.body.username,
password: hashedPassword,
email: req.body.email,
});
return newUser.save().then((user) => {
res.json({ success: true, user });
}).catch((err) => {
res.status(500).json({ success: false, message: 'Internal Server Error' });
});
}).catch((err) => {
res.status(500).json({ success: false, message: 'Internal Server Error' });
});
}
Das ist wirklich schrecklicher Code. Gibt es eine bessere Möglichkeit, den Code zu reinigen?
Welche Version von Knoten und Mungo? – trincot
mongoose: 4.11.4 node.js: 6.11.0 – user7966486