Поля DISTINCT ON не поддерживаются этим бэкэндом базы данных

Использование Underscore, простой diff:

var o1 = {a: 1, b: 2, c: 2},
    o2 = {a: 2, b: 1, c: 2};

_.omit(o1, function(v,k) { return o2[k] === v; })

Результаты в частях o1, которые соответствуют, но с разными значениями в o2:

{a: 1, b: 2}

It 'd различны для глубокого diff:

function diff(a,b) {
    var r = {};
    _.each(a, function(v,k) {
        if(b[k] === v) return;
        // but what if it returns an empty object? still attach?
        r[k] = _.isObject(v)
                ? _.diff(v, b[k])
                : v
            ;
        });
    return r;
}

Как указано в комментариях @Juhana, вышесказанное является только разложением a -> b, а не обратимым (что означает, что дополнительные свойства в b будут игнорироваться). Вместо этого используйте a -> b -> a:

(function(_) {
  function deepDiff(a, b, r) {
    _.each(a, function(v, k) {
      // already checked this or equal...
      if (r.hasOwnProperty(k) || b[k] === v) return;
      // but what if it returns an empty object? still attach?
      r[k] = _.isObject(v) ? _.diff(v, b[k]) : v;
    });
  }

  /* the function */
  _.mixin({
    diff: function(a, b) {
      var r = {};
      deepDiff(a, b, r);
      deepDiff(b, a, r);
      return r;
    }
  });
})(_.noConflict());

См. http://jsfiddle.net/drzaus/9g5qoxwj/ для полного примера + тесты + mixins

1
задан cezar 26 March 2019 в 13:09
поделиться

1 ответ

distinct('field_name') не поддерживается в MySQL. Это только поддержка distinct(). distinct('field_name') будет работать только на PostgresSQL . Для более подробной информации, пожалуйста, ознакомьтесь с документацией .

Примеры (после первого будут работать только на PostgreSQL): ( Копия вставлена ​​из документации: )

>>> Author.objects.distinct() 
   [...]

>>> Entry.objects.order_by('pub_date').distinct('pub_date')
   [...]

>>> Entry.objects.order_by('blog').distinct('blog')
   [...]

>>> Entry.objects.order_by('author', 'pub_date').distinct('author', 'pub_date')
   [...]

>>> Entry.objects.order_by('blog__name', 'mod_date').distinct('blog__name', 'mod_date')
   [...]

>>> Entry.objects.order_by('author', 'pub_date').distinct('author')
   [...]
0
ответ дан ruddra 26 March 2019 в 13:09
поделиться
Другие вопросы по тегам:

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