0

Я пытаюсь запустить функцию put для обновления пользователя в моем mongoDB, но я получаю ошибку внутренней внутренней службы 500. Я использую angular-fullstack генератор500 Внутренняя ошибка сервера: не удается обновить пользователя в mongoose

Я использую этот ресурс в моем контроллере:

update(User) { 
    User.$update(); 
    } 

Вот функции я называю во внутреннем интерфейсе, чтобы попытаться положить данные все, кажется, работает нормально, когда только я называют saveUpdates, похоже, что запуск ошибки 500 .:

function handleError(res, statusCode) { 
    statusCode = statusCode || 500; 
    return function(err) { 
    res.status(statusCode).send(err); 
    }; 
} 
// this seems to be the function giving me the problem. 
function saveUpdates(updates) { 
    return function(entity) { 
    var updated = _.merge(entity, updates); 
    return updated.saveAsync() 
     .spread(updated => { 
     return updated; 
     }); 
    }; 
} 

function respondWithResult(res, statusCode) { 
    statusCode = statusCode || 200; 
    return function(entity) { 
    if (entity) { 
     res.status(statusCode).json(entity); 
    } 
    }; 
} 

function handleEntityNotFound(res) { 
    return function(entity) { 
    if (!entity) { 
     res.status(404).end(); 
     return null; 
    } 
    return entity; 
    }; 
} 

export function updateUser(req, res) { 
    if (req.body._id) { 
    delete req.body._id; 
    } 
User.findByIdAndUpdate(req.params.id) 
    .then(handleEntityNotFound(res)) 
    .then(saveUpdates(req.body)) 
    .then(respondWithResult(res)) 
    .catch(handleError(res)); 
    } 

Я попытался следующие рекомендации по this странице для углового набитый стека, например, изменение ._merge к ._extend безрезультатно.

ответ

1

Я ответил на мой вопрос:

радиально-полный стек использует lodash, так что если вы хотите, чтобы сделать передачу запросов с использованием ._merge так:

function saveUpdates(updates) { 
    return function(entity) { 
    var updated = _.merge(entity, updates); 
    return updated.saveAsync() 
     .spread(updated => { 
     return updated; 
     }); 
    }; 
} 

, то вам необходимо импортировать lodash в пользователя .contoller, созданный генератором углового ползучего генератора.

import _ from 'lodash'; 
+0

О, человек, я пытался выяснить, почему я получил ошибку 500 после слияния, и я полностью упустил исключение из lodash! Это мелочи ... –