#node.js #mongodb #mongoose #mongoose-schema
#node.js #mongodb #мангуст #мангуст-схема #mongoose #mongoose-схема
Вопрос:
Репо : https://github.com/heet-vakharia/codepen-cloned-server Я создаю серверную часть Codepen Clone, используя mongoose, я не знаю, почему, но register route не работает, он показывает, это ошибка при создании нового пользователя
{
"err": {
"driver": true,
"name": "MongoError",
"index": 0,
"code": 11000,
"keyPattern": {
"pens.id": 1
},
"keyValue": {
"pens.id": null
}
}
}
Вот функция маршрута Reagister
const register = async (req, res, User, bcrypt) => {
const { userid, password } = req.body;
if (userid amp;amp; password) {
var encryptedPassword = bcrypt.hashSync(password, 8);
User.create(
{
userid: userid,
password: encryptedPassword,
pens: [],
},
(err, user) => {
if (err) {
res.status(405).status(err);
} else {
res.status(201).json(user);
}
}
);
} else {
res.status(400).json({ msg: "Plz provide all information" });
}
};
export default register;
Ответ №1:
Код 11000 означает, что вы пытаетесь сохранить дублирующуюся запись. Из репозитория userid
он уникален, поэтому при попытке сохранить одну и ту же запись дважды вы получите код 11000.
Вместо этого вы должны использовать функцию обновления (даже при создании новых записей). При использовании {upsert:true} новые документы будут вставлены в коллекцию, в то время как существующие записи будут обновлены.
findOneAndUpdate()
полезная функция.