2017-01-23 3 views
1

У меня есть следующий экспресс-маршрут, и я пытаюсь вернуть значение определенного поля в моей модели пользователя, просмотрев электронную почту пользователя. Даже выполнив следующую команду, где я не ограничивающими конкретного поля генерируется ошибка:Попытка вернуть 1 поле из поиска другого с помощью Mongoose

"message": "Cast to string failed for value \"[object Object]\" at path \"email\"", 

Мой код:

app.post('/users/forgot',(req, res) => { 
var body = _.pick(req.body, ['email']); 
    User.find({ 
     email: body 
    }).then((user) => { 
     res.send({user}); 
    }, (e) => { 
     res.status(400).send(e); 
    }); 
}); 

Как я могу вернуть значение я ищу?

+0

'body' является объектом, а не строка. Вы можете попытаться зарегистрировать его перед выполнением запроса. – str

+0

Не могли бы вы напечатать на консоли, какова ценность тела? –

ответ

1

Как указано в documentation, _.pick возвращает объект, содержащий выбранное значение. Таким образом, в следующей строке, body является object, не string

var body = _.pick(req.body, ['email']); // {'email' : '[email protected]'} 

Попробуйте

app.post('/users/forgot',(req, res) => { 
    var body = req.body.email; // or _.get(body, 'email') 
    User.find({ 
    email: body 
    }).then((user) => { 
    res.send({user}); 
    }, (e) => { 
    res.status(400).send(e); 
    }); 
}); 
+0

Это решило мою первоначальную проблему, поэтому я отмечаю ее как выполненную. Вторичная проблема заключается в том, что у меня есть метод модели, который позволяет только возвращать определенные поля - в этом конкретном случае мне нужно вернуть поле, не входящее в этот список. Есть ли способ переопределить метод модели и вернуть другое поле? – dwax

Смежные вопросы