contact.save не является ошибкой функции при использовании метода [mongoose_model_object] .save () - PullRequest
1 голос
/ 02 марта 2020

Здесь auth - это промежуточное ПО, которое генерирует jwt и авторизует пользователя, и у меня есть модель mon goose с именем Contact. Однако, когда я пытаюсь сделать contact.save (), я получаю исключение, так как contact.save () не является функцией.

router.post('/',auth,async (req,res)=>{
try
{
 let contact = new Contact();
 contact = {...req.body};
 contact.userID=req.user.id;

 const {error} = validateContact(contact);
 console.log(`ERROR - ${error}`);

 if(error){
  return res.status(400).json({"status":1,"message":error.details[0].message});
 } 

 const contact1 = await contact.save();

 res.status(200).json({"status":0,"message":"contact addedd","contact":contact1});
}
catch(error){
console.log(`contacts - ${error.message}`);
}
});

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Вы заменяете значение модели Контакт, когда говорите

 let contact = new Contact();

 //Here is the problem----

 contact = {...req.body}; //<------------

 //-----------------------

 contact.userID=req.user.id;
1 голос
/ 02 марта 2020

.save() доступно для экземпляра mon goose Model . Запустив contact = {...req.body};, вы заменяете такой экземпляр новым простым JavaScript объектом, поэтому вы теряете эту функцию.

Вместо параметра конструктора можно передать req.body:

let contact = new Contact(req.body);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...