По умолчанию заказ Mongoose [дубликат]

Еще один подход к возврату значения из асинхронной функции - передать объект, который сохранит результат от асинхронной функции.

Вот пример того же:

var async = require("async");

// This wires up result back to the caller
var result = {};
var asyncTasks = [];
asyncTasks.push(function(_callback){
    // some asynchronous operation
    $.ajax({
        url: '...',
        success: function(response) {
            result.response = response;
            _callback();
        }
    });
});

async.parallel(asyncTasks, function(){
    // result is available after performing asynchronous operation
    console.log(result)
    console.log('Done');
});

Я использую объект result для хранения значения во время асинхронной операции. Это позволяет получить результат даже после асинхронного задания.

Я использую этот подход много. Мне было бы интересно узнать, насколько хорошо этот подход работает, когда задействован результат обратно через последовательные модули.

73
задан BonsaiOak 6 October 2014 в 17:52
поделиться

2 ответа

По определению сортировка по умолчанию не определена, а также порядок возврата документов. Если запрос отсутствует, он будет использовать естественный порядок . Результаты возвращаются в том порядке, в котором они найдены, что может совпадать с порядком вставки (но не гарантировано) или порядком используемого индекса.

Некоторые примеры, которые повлияют на хранение (естественный) порядок:

  • , если документы обновлены и не помещаются в их выделенное место, они будут перемещены
  • новые документы могут быть вставлены в имеющиеся промежутки, созданные удаленными или перемещенными документами

Если используется индекс, документы будут возвращены в том порядке, в котором они найдены. Если используется более одного индекса, то порядок зависит от внутреннего индекса, по которому индекс сначала идентифицировал документ во время процесса дедупликации.

Если вам нужен конкретный заказ, вы должны включить сортировку в свой запрос.

Исключение, указанное для естественного порядка с ограниченным набором , состоит в том, что документы не могут перемещаться и сохраняются в порядке размещения. Заказ является частью ограниченного набора, который гарантирует, что самые старые документы «возрастут» в первую очередь. Кроме того, документы не могут быть удалены или перемещены в сборнике (см. Использование и ограничения для получения дополнительной информации).

79
ответ дан Stennie 28 August 2018 в 14:29
поделиться

Он возвращается в сохраненном порядке (заказ в файле), но не гарантируется, что они находятся в вставленном порядке. Они не отсортированы по полю _id. Иногда это может выглядеть так, как будто он сортируется по порядку вставки, но он может измениться в другом запросе. Это ненадежно.

3
ответ дан Parvin Gasimzade 28 August 2018 в 14:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: