Как отсортировать список моделей на основе идентификатора родительской модели в mon goose? - PullRequest
0 голосов
/ 13 марта 2020

Я получил эти две схемы:

Пользователь. 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(), но после того, как я прошел достаточное количество документации, я все еще не могу понять, как его использовать.

Все, что я хочу, - это найти способ сортировки задач, созданных одним и тем же пользователем на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...