I'm using breeze-sequelize version 0.0.18. I get a bizarre error _.pluck is not a function
when I try to use select() on the entityQuery. And if I remove .select(), it'll work just fine.
My breeze query looks like this:
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();
And upon return, the error I get is:
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)
So curiously I took a look at function SequelizeQuery._processSelect
in my breeze-sequelize library. The error is coming from 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;
});
}
Can someone help me? Thanks!
The _.pluck
function is from lodash, and lodash removed the pluck
function in version 4.0
The breeze-sequelize library will eventually be updated to lodash 4, but in the meantime, try using lodash 3.x.