Я получил эти две схемы:
Пользователь. js
const UserSchema = new mongoose.Schema({
...,
todos: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Todo' }]
});
Todo. js
const TodoSchema = new mongoose.Schema({
...,
creator: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
});
Затем я хочу отобразить список задач на основе общего свойства создателя. Мне удалось сделать это на внешнем интерфейсе так:
export default function () {
return (
<ul className="App_list">
{tasks.map((task, index) => {
if(task.creator === JSON.parse(localStorage.getItem('user'))._id){
return <ListItem />
}
})}
</ul>
)
}
И это дает мне правильный результат. Но я хочу позаботиться об этом поведении сортировки на бэкэнде. У меня есть контроллер, который выбирает все задачи:
getAllTodos. js
function getAllTodos (req, res) {
Todo
.find({})
.exec((err, todo) => {
if (!todos || todos.length == 0) {
return res.status(401).json({
message: 'No todos found',
});
}
res.send(todos);
})
}
и другой контроллер, который создает tosos:
createTodo. js
function createTask (req, res) {
const { text, completed, createdDateAndTime, creator } = req.body;
User
.findById(creator)
.exec((err, user) => {
const newTask = new Task({ text, completed, createdDateAndTime, creator: user._id });
newTask.save((err) => {
if (err) {
return res.json({
message: `Task wasn't saved beacause: ${err}`
});
}
});
user.tasks.push(newTask);
user.save();
});
};
Я знаю, что могу использовать метод Model.populate()
, но после того, как я прошел достаточное количество документации, я все еще не могу понять, как его использовать.
Все, что я хочу, - это найти способ сортировки задач, созданных одним и тем же пользователем на сервере.