Как вернуть последний встроенный документ push ()
-
26-10-2019 - |
Вопрос
Я застрял, пытаясь выяснить, возможно ли это.
Используя пример блога от Mongoose для демонстрации, однако мой фактический вариант использования немного сложнее:
var Comments = new Schema({
title : String
, body : String
, date : Date
});
var BlogPost = new Schema({
author : ObjectId
, title : String
, body : String
, date : Date
, comments : [Comments]
});
var BlogPost = mongoose.model('BlogPost');
var post = new BlogPost();
Мне нужно создать новый комментарий и вернуть новый Комментарий клиенту. Наличие комментариев в качестве встроенного документа действительно удобно для меня и хорошо работает. Однако я не хочу возвращать каждый комментарий клиенту каждый раз, когда добавляю новый.
post.comments.push({ title: 'My comment' });
Как я использую Mongoose, если бы я мог немного получить id
Нового комментария, который поможет, а также позволит мне добавить другие функции, такие как редактирование комментариев или удаление комментария.
Единственный способ сделать это - иметь комментарии в качестве собственной коллекции?
Решение
Я предполагаю, что проблема, которую вы пытаетесь решить, заключается в том, чтобы обновить страницу после того, как клиент публикует комментарий, верно?
Итак, вы вставляете новый комментарий. Это означает, что у вас уже есть свои данные. Выполните вставку и верните данные клиенту. Или, что еще лучше, верните простой ACK, поскольку клиент также имеет полные данные комментариев и может сделать его само по себе.