#javascript #node.js #mongodb #mongoose
#javascript #node.js #mongodb #мангуст
Вопрос:
я новичок в Node.js и я пытаюсь использовать populate()
, но у меня это не работает.
Я хочу user
заполнить формы
Это модель
const UserSchema = new Schema({
firstName: {
type: 'string',
required: ' Firstname is Required'
},
lastName: {
type: 'string',
required: ' lastName is Required'
},
email: {
type: 'string',
required: ' email is Required'
},
phone: {
type: 'string',
},
entrprise: {
type: 'string'
},
password: {
type: 'string',
required: ' password is Required'
},
forms: [{
type: mongoose.Schema.Types.ObjectId,
ref: "Form"
}
]
})
и это функция
const getUser = async (req, res) => {
try {
const { userId } = req.params;
if (!userId) return res.status(400).json({ message: "ERROR ID!" });
const result = await User.findOne({ _id: userId })
.populate('forms')
.exec()
return res.status(200).json({ message: "Success", result });
} catch (err) {
res.status(500).json({ message: "INTERNAL ERROR SERVER!" });
console.log(err.message);
}
};
но это то, что я получаю в результате
"message": "Success",
"result": {
**"forms": [],**
"_id": "5fc917c49aca9b98b8d9b2aa",
"firstName": "lea",
"lastName": "bouteflika",
"email": "inspirez@gmail.com",
"password": "$2b$10$zJ5Du2YdfJBsz1ah6JYm7uPe1RYMwmmqmq68TxbvbwYnHVcDKNQeq",
"phone": " 213556865069",
"__v": 0
}
формы пусты, у кого-нибудь есть ответ?
Комментарии:
1. Как выглядит пользователь в базе данных?
2. это пользователь в базе данных { forms: [], _id: 60290c2609fba7a4482cb3dd, имя пользователя: ‘lea’, Фамилия: ‘chaib’, адрес электронной почты: ‘leachaib@gmail.com ‘, пароль: ‘$2b $10$OHmzahuyiFXbqsFE6jWiiul7GOE41J.Rp4z7yA3hQaXG1dceELHw2’, телефон: ‘77890543321’, __v: 0 }
3. проверьте свою базу данных и проверьте коллекцию форм, действительно ли есть точное заклинание с формой или что-то еще, например, формы или формы? и напишите точное имя в вашей пользовательской схеме
4. я сделал это, но получил тот же результат, пустой массив, имя коллекции — forms
Ответ №1:
код о заполнении правильный, вы должны проверить id
, forms field
существует ли в From
модели, потому что при вставке данных в коллекцию обновляется только одна коллекция
const listOfIds = await User.findById(userId );
let result = await Form.find({_id: {$in:[listOfIds.forms]}}).lean()
console.log(result)
итак, найдите список идентификаторов в модели формы, если результат равен 0, поэтому проверьте запрос вставки;
и вы можете использовать finById
вместо finOne
для вставки новой формы сделайте так
//1
const form = new Form({
title
//....
});
//2
let user = await User.findById(userId); // find the user
//3
let newForm = await form.save(); // save new form
//4
user.forms.push(newForm); // push the new form into user for populate
//5
await user.save(); //update user
Комментарии:
1. спасибо, я пытаюсь сделать это, но получаю пустой массив, пожалуйста, не могли бы вы сказать мне, что вы подразумеваете под запросом insert?
2. поместите запрос вставки при вставке форм в коллекцию
3. я действительно новичок в этой области, не могли бы вы привести мне пример, я не понял
4. если вы хотите вставить форму в коллекцию форм, после сохранения вы должны нажать на
_id
вставленную форму, вuser forms
поле, после этого вы можете использовать заполнить, как пять шагов в моем ответе5. спасибо, но идентификатор не сработал, я получаю пустой массив