.Net выбирает неправильную версию сборки

Я подумал, что добавлю к этому, чтобы прояснить ситуацию для полных нубов, подобных мне.

Что сильно запутывает, если вы не внимательны, так это три разных метода заполнения. Они - методы разных объектов (Model vs. Document), принимают разные входы и дают разные выходы (Document vs. Promise).

Здесь они предназначены для тех, кто сбиты с толку:

Document.prototype.populate ()

См. Полный документ.

Этот файл работает с документами и возвращает документ. В исходном примере это будет выглядеть так:

book.save(function(err, book) {
    book.populate('_creator', function(err, book) {
        // Do something
    })
});

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

book.save(function(err, book) {
    book
    .populate('_creator')
    .populate('/* Some other ObjectID field */', function(err, book) {
        // Do something
    })
});

Но не будьте глупыми, как я, и попытайтесь сделать это:

book.save(function(err, book) {
    book
    .populate('_creator')
    .populate('/* Some other ObjectID field */')
    .then(function(book) {
        // Do something
    })
});

Помните: Document.prototype.populate () возвращает документ, поэтому это вздор. Если вам нужно обещание, вам нужно ...

Document.prototype.execPopulate ()

См. Полный документ.

Это работает над документами, но возвращает обещание, которое разрешает документ. Другими словами, вы можете использовать его следующим образом:

book.save(function(err, book) {
    book
    .populate('_creator')
    .populate('/* Some other ObjectID field */')
    .execPopulate()
    .then(function(book) {
        // Do something
    })
});

Это лучше. Наконец, есть ...

Model.populate ()

См. Полные документы.

Это работает на моделях и возвращается Обещание. Поэтому он используется несколько иначе:

book.save(function(err, book) {
    Book // Book not book
    .populate(book, { path: '_creator'})
    .then(function(book) {
        // Do something
    })
});

Надеюсь, что это помогло другим новичкам.

130
задан Community 23 May 2017 в 11:47
поделиться

1 ответ

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

0
ответ дан 23 November 2019 в 23:47
поделиться
Другие вопросы по тегам:

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