Nodejs使用MySQL进行微风续集 - .select()无效

时间:2016-04-01 16:49:42

标签: mysql node.js breeze

我正在使用breeze-sequelize版本0.0.18。当我尝试在entityQuery上使用select()时,我得到了一个奇怪的错误_.pluck is not a function。如果我删除.select(),它就会正常工作。

我的微风查询如下所示:

var predicate = Predicate.create('transactionDate', '>=', fromDate);
var entityQuery = EntityQuery.from('Transactions')
  .where(predicate)
  .select('transactionDate');
var sequelizeQuery = new SequelizeQuery(api.db, entityQuery);
return sequelizeQuery.execute();

回来后,我得到的错误是:

TypeError: _.pluck is not a function
at SequelizeQuery.<anonymous> (/Users/shu/Documents/project/node_modules/breeze-sequelize/SequelizeQuery.json.js:143:39)
at Array.map (native)
at SequelizeQuery._processSelect (/Users/shu/Documents/project/node_modules/breeze-sequelize/SequelizeQuery.json.js:136:56)
at SequelizeQuery._processQuery (/Users/shu/Documents/project/node_modules/breeze-sequelize/SequelizeQuery.json.js:72:8)
at new SequelizeQuery (/Users/shu/Documents/project/node_modules/breeze-sequelize/SequelizeQuery.json.js:43:23)
at getTransactions (/Users/shu/Documents/project/src/server/api/admin.controller.js:189:26)

好奇地,我在我的breeze-sequelize库中看了一下函数SequelizeQuery._processSelect。错误来自return usesNameOnServer ? pp : _.pluck(props, "nameOnServer").join(".");

SequelizeQuery.prototype._processSelect = function() {
var selectClause = this.entityQuery.selectClause;
  var usesNameOnServer = this.entityQuery.usesNameOnServer;
  if (selectClause == null) return;
  // extract any nest paths and move them onto the include
  var navPropertyPaths = [];
  this.sqQuery.attributes = selectClause.propertyPaths.map(function(pp) {
    var props = this.entityType.getPropertiesOnPath(pp, usesNameOnServer, true);
    var isNavPropertyPath = props[0].isNavigationProperty;
    if (isNavPropertyPath) {
      this._addInclude(this.sqQuery, props);
    }
    if (isNavPropertyPath) return null;
    return usesNameOnServer ?  pp : _.pluck(props, "nameOnServer").join(".");
  }, this).filter(function(pp) {
    return pp != null;
  });
}

有人能帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

_.pluck函数来自lodash,lodash删除版本4.0中的pluck函数

breeze-sequelize库最终将更新为lodash 4,但在此期间,请尝试使用lodash 3.x。