Как вернуть последний push () внедренный документ

1

Я застреваю, пытаясь понять, возможно ли это.

Используя пример блога из 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 нового комментария, который поможет, а также позволит мне добавить другие функции, такие как редактирование комментария или удаление комментария.

Единственный способ сделать это - иметь комментарии как свою собственную коллекцию?

Теги:
mongoose

1 ответ

1
Лучший ответ

Я предполагаю, что проблема, которую вы пытаетесь решить, заключается в том, как обновлять страницу после того, как клиент отправляет комментарий, правильно?

Итак, вы вставляете новый комментарий. Это означает, что у вас уже есть свои данные. Выполните вставку и верните данные клиенту. Или, что еще лучше, верните простой вопрос, так как клиент также имеет полные комментарии и может отображать его сам по себе.

  • 0
    Это определенно помогает, однако, без какого-либо id клиент не может ничего сделать с комментарием. Например, удалите его, отредактируйте и т. Д. Могу ли я получить id нового встроенного документа?
  • 0
    @Tom: встроенные документы не имеют идентификаторов. Если вы не назначите их самостоятельно. Но тогда DB не делает никаких проверок уникальности, это все на вас. Вы можете сгенерировать уникальный ObjectId в своем коде node.js.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню