Рамда не работает в обратном вызове запроса Mongoose - PullRequest
0 голосов
/ 23 сентября 2018

Я пишу REST API с использованием NodeJS, Express, Mongoose, Ramda.Мне нужно подготовить ответ для клиента с помощью утилит Ramda, но я столкнулся с некоторыми проблемами:

const R = require('ramda');

router.put('/:id/update', (req, res) => {
  User.findOneAndUpdate(
    { '_id': req.params.id },
    { $set: { a: 'a' }},
    {},
    (err, newUser) => {
      if (err) {
        res.status(500).send(responseCodes.updateUserError());
      } else {
        const exemplaryObj = { a: 'a', email: 'bbb' };
        console.log(
          newUser, // { email: 'aaa', password: 'bbb' }
          R.omit(['email', 'password'], newUser), // { email: 'aaa', password: 'bbb' }
          R.omit(['email', 'password'], exemplaryObj) // { a: 'a' }
        )
      }
    }
  );
});

Почему omit (или другие методы, такие как merge) у Ramda не работают должным образом с объектами, возвращаемымиОбратные вызовы запроса Mongoose?

1 Ответ

0 голосов
/ 23 сентября 2018

Вы можете использовать метод toObject для преобразования возвращенного документа в простой объект JavaScript:

 R.omit(['email', 'password'], newUser.toObject())

https://mongoosejs.com/docs/api.html#document_Document-toObject

Вы можете альтернативно добавить наклонитесь к цепочке запросов, чтобы сообщить Mongoose, что нужно вернуть только простой объект JavaScript:

https://mongoosejs.com/docs/api.html#query_Query-lean

...