Я скопировал документы из локальной базы данных в свою производственную базу данных, и когда я пытаюсь получить документ по идентификатору, запустив model.findOne ({_ id: id}), mongoose ничего не возвращает. Я копирую документы с тем же идентификатором, но я также пробовал с новым идентификатором. Я могу найти документ в базе данных и подтвердить, что JSON правильный, идентификатор правильный и т. д., И он его не найдет. Документы, которые я не копировал и которые были созданы с помощью моего приложения, по-прежнему отлично запрашиваются с помощью команды findOne. Итак, я понятия не имею, что происходит
любая помощь приветствуется, спасибо
groups.crud
getGroupById(id: string) {
logger.debug(".getGroupById id: " + id);
return new Promise(function(resolve, reject) {
GroupsModel.findById(id)
.populate('createdBy')
.then(function (group) {
logger.debug(".getGroupById");
if (group.createdBy.privacySettings.useUserName) {
group.createdBy.firstName = '';
group.createdBy.lastName = '';
}
resolve(group);
})
.catch(function(error) {
reject(error);
});
});
}
groups.routes
getGroupById(req, res, next) {
logger.debug('.getGroupById: BEG');
let id = req.params.id;
return groupsCrud.getGroupById(id)
.then(function(group) {
if (group) {
logger.debug('.getGroupById: get by id success');
let response = {
data : group
}
logger.debug('.getGroupById: response: ' + response);
res.json(response);
}
else {
logger.debug('.getGroupById: get by id failed 1');
res.status(404).json({ status : 404, message : "Group not found."});
}
})
.catch(function(error) {
logger.debug('.getGroupById: get by id failed 2 err = ' + JSON.stringify(error, null, 2));
res.sendStatus(404);
});
}
Я возвращаю строку. например: "5b8833a482f4b171446ca931" Я пробую findById. ожидая его развертывания
Хорошо Дайте мне знать, если это сработает.
это не работает. Я отправлю код
да. Пожалуйста, ответьте на вопрос, чтобы мы могли повторно создать / решить проблему.
Я выложил код в редакцию. Что меня ошеломило, так это то, что он находит документы, которые были созданы нормально. Просто не могу найти никаких документов, которые я скопировал ... Я предполагаю, что это как-то связано с тем, как mongo устанавливает _id и как ObjectId имеет метку времени в нем
вы пробовали Model.findById (id)? для нас будет легко, если вы предоставите образец кода и проверьте, что идентификатор, который вы передаете, имеет тип ObjectId (id), а не строку. Если это строка, лучше использовать findById.