Flexbox - это «одномерная» система компоновки: она может выравнивать элементы вдоль горизонтальных или вертикальных линий.
Истинная сетка «2-мерная»: она может выравнивать элементы вдоль горизонтальной и вертикальной линий. Другими словами, ячейки могут располагаться между столбцами и строками, которые невозможно выполнить с помощью flexbox.
Вот почему flexbox имеет ограниченную емкость для построения гридов. Это также является причиной того, что W3C разработал еще одну технологию CSS3, Grid Layout (см. Ниже).
В контейнере flex с flex-flow: row wrap
элементы гибкости должны быть завернуты к новым строкам .
Это означает, что элемент гибкости нельзя обернуть под другим элементом в той же строке .
Обратите внимание, что div # 3 обертывается ниже div # 1 , создавая новую строку. Он не может упасть ниже div # 2 .
В результате, когда элементы не самые высокие в строке, остается пустое пространство, создавая неприглядные пробелы.
image credit: Jefree Sujit
column wrap
Решение Если вы переключитесь на flex-flow: column wrap
, элементы гибки будут стекаться вертикально, а сетчатая компоновка более достижима. Однако контейнер с колоновым направлением имеет три потенциальные проблемы сразу:
В результате контейнер со столбцом может быть невозможен во многих случаях.
order
для повторной компоновки вашего макета (например, в медиа-запросах), этот метод может устранить эту опцию. Это один из основных вариантов использования промежуточного программного обеспечения Mongoose 'remove'
.
clientSchema.pre('remove', function(next) {
// 'this' is the client being removed. Provide callbacks here if you want
// to be notified of the calls' result.
Sweepstakes.remove({client_id: this._id}).exec();
Submission.remove({client_id: this._id}).exec();
next();
});
Таким образом, когда вы вызываете client.remove()
, это промежуточное программное обеспечение автоматически вызывается очистить зависимости.
Другим способом я нашел
submissionSchema.pre('remove', function(next) {
this.model('Client').remove({ submission_ids: this._id }, next);
next();
});
Если ваши ссылки хранятся иначе, скажем, client
имеет массив из submission_ids
, то аналогично принятому ответу вы можете определить следующее на submissionSchema
:
submissionSchema.pre('remove', function(next) {
Client.update(
{ submission_ids : this._id},
{ $pull: { submission_ids: this._id } },
{ multi: true }) //if reference exists in multiple documents
.exec();
next();
});
, который удалит идентификатор отправки из ссылочных массивов клиентов в submission.remove()
.
submission_ids
для C1 и C3 (OneToMany, то есть у Клиента много представлений). Мой ответ выше описывает сценарий, в котором вы хотите удалить S273. Когда вы это сделаете, идентификатор S273 будет удален из submission_ids
как C1, так и C3.
– Talha Awan
14 February 2018 в 20:30
submissionSchema
является дочерней коллекцией, на которую ссылаются Client schema
вправо?
– Francis Rodrigues
14 February 2018 в 23:12
Schema
, который использовался для определения моделиClient
до создания модели с помощью вызоваmongoose.model
илиdb.model
. – JohnnyHK 16 January 2013 в 18:34remove
, когда вы не выполняете обратный вызов. Я обновил ответ. – JohnnyHK 16 January 2013 в 19:38remove
в экземпляре doc. – JohnnyHK 22 April 2015 в 12:46