New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

orm

Package Overview
Dependencies
Maintainers
2
Versions
103
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

orm - npm Package Compare versions

Comparing version 3.2.0 to 3.2.1

3

Changelog.md

@@ -0,1 +1,4 @@

### v3.2.1
- Fix has many 'has' accessor failing when join table has duplicate entries ([#761](../../issues/761))
### v3.2.0

@@ -2,0 +5,0 @@ - Make [.find|.where|.all] synonyms & allow them to chain multiple times

22

lib/Associations/Many.js

@@ -161,2 +161,3 @@ var _ = require("lodash");

options.autoFetchLimit = 0;
options.__merge = {

@@ -184,10 +185,13 @@ from: { table: association.mergeTable, field: Object.keys(association.mergeAssocId) },

association.model.find(conditions, options, function (err, instances) {
if (err) {
return cb(err);
}
if (!Instances.length) {
return cb(null, instances.length > 0);
}
return cb(null, instances.length == Instances.length);
association.model.find(conditions, options, function (err, foundItems) {
if (err) return cb(err);
if (_.isEmpty(Instances)) return cb(null, false);
var foundItemsIDs = _(foundItems).map('id').uniq().value();
var InstancesIDs = _(Instances ).map('id').uniq().value();
var sameLength = foundItemsIDs.length == InstancesIDs.length;
var sameContents = sameLength && _.isEmpty(_.difference(foundItemsIDs, InstancesIDs));
return cb(null, sameContents);
});

@@ -301,2 +305,3 @@ return this;

var cb = noOperation;
for (var i = 0; i < arguments.length; i++) {

@@ -356,2 +361,3 @@ switch (typeof arguments[i]) {

var cb = noOperation;
var run = function () {

@@ -358,0 +364,0 @@ var savedAssociations = [];

var _ = require("lodash");
var async = require("async");
var Utilities = require("./Utilities");

@@ -21,3 +22,3 @@ var ChainInstance = require("./ChainInstance");

var chainRun = function (cb) {
var chainRun = function (done) {
var order, conditions;

@@ -38,54 +39,53 @@

exists : opts.exists
}, function (err, data) {
}, function (err, dataItems) {
if (err) {
return cb(err);
return done(err);
}
if (data.length === 0) {
return cb(null, []);
if (dataItems.length === 0) {
return done(null, []);
}
var pending = data.length;
var pending = dataItems.length;
var createInstance = function (idx) {
opts.newInstance(data[idx], function (err, instance) {
data[idx] = instance;
if (--pending === 0) {
return (opts.__eager && opts.__eager.length ? eagerLoading : cb)(null, data);
}
});
};
var eagerLoading = function (err, data) {
var eagerLoad = function (err, items) {
var pending = opts.__eager.length;
var idMap = {};
var count = 0;
var keys = _.map(data, function (instance) {
var key = instance[opts.keys[0]];
var keys = _.map(items, function (item, index) {
var key = item[opts.keys[0]];
// Create the association arrays
for (var i = 0, association; association = opts.__eager[i]; i++) {
instance[association.name] = [];
item[association.name] = [];
}
idMap[key] = index;
idMap[key] = count++;
return key;
});
_.map(opts.__eager, function (association) {
opts.driver.eagerQuery(association, opts, keys, function (err, instances) {
for (var i = 0, instance; instance = instances[i]; i++) {
// Perform a parent lookup with $p, and initialize it as an instance.
data[idMap[instance.$p]][association.name].push(association.model(instance));
}
async.eachSeries(opts.__eager,
function (association, cb) {
opts.driver.eagerQuery(association, opts, keys, function (err, instances) {
if (err) return cb(err)
if (--pending === 0) {
return cb(null, data);
}
});
});
for (var i = 0, instance; instance = instances[i]; i++) {
// Perform a parent lookup with $p, and initialize it as an instance.
items[idMap[instance.$p]][association.name].push(association.model(instance));
}
cb();
});
},
function (err) {
if (err) done(err);
else done(null, items);
}
);
};
for (var i = 0; i < data.length; i++) {
createInstance(i);
}
async.map(dataItems, opts.newInstance, function (err, items) {
if (err) return done(err);
var shouldEagerLoad = opts.__eager && opts.__eager.length;
var completeFn = shouldEagerLoad ? eagerLoad : done;
return completeFn(null, items);
});
});

@@ -92,0 +92,0 @@ }

var _ = require("lodash");
var async = require("async");
var ChainFind = require("./ChainFind");

@@ -563,24 +564,42 @@ var Instance = require("./Instance").Instance;

model.create = function () {
var Instances = [];
var options = {};
var cb = null, idx = 0, single = false;
var createNext = function () {
if (idx >= Instances.length) {
return cb(null, single ? Instances[0] : Instances);
var itemsParams = []
var items = [];
var options = {};
var done = null;
var single = false;
for (var i = 0; i < arguments.length; i++) {
switch (typeof arguments[i]) {
case "object":
if ( !single && Array.isArray(arguments[i]) ) {
itemsParams = itemsParams.concat(arguments[i]);
} else if (i === 0) {
single = true;
itemsParams.push(arguments[i]);
} else {
options = arguments[i];
}
break;
case "function":
done = arguments[i];
break;
}
}
Instances[idx] = createInstance(Instances[idx], {
var iterator = function (params, index, cb) {
createInstance(params, {
is_new : true,
autoSave : opts.autoSave,
autoFetch : false
}, function (err) {
}, function (err, item) {
if (err) {
err.index = idx;
err.instance = Instances[idx];
err.index = index;
err.instance = item;
return cb(err);
}
Instances[idx].save(function (err) {
item.save(function (err) {
if (err) {
err.index = idx;
err.instance = Instances[idx];
err.index = index;
err.instance = item;

@@ -590,4 +609,4 @@ return cb(err);

idx += 1;
createNext();
items[index] = item;
cb();
});

@@ -597,22 +616,7 @@ });

for (var i = 0; i < arguments.length; i++) {
switch (typeof arguments[i]) {
case "object":
if ( !single && Array.isArray(arguments[i]) ) {
Instances = Instances.concat(arguments[i]);
} else if (i === 0) {
single = true;
Instances.push(arguments[i]);
} else {
options = arguments[i];
}
break;
case "function":
cb = arguments[i];
break;
}
}
async.eachOfSeries(itemsParams, iterator, function (err) {
if (err) return done(err);
done(null, single ? items[0] : items);
});
createNext();
return this;

@@ -619,0 +623,0 @@ };

@@ -15,3 +15,3 @@ {

],
"version" : "3.2.0",
"version" : "3.2.1",
"license" : "MIT",

@@ -40,8 +40,9 @@ "homepage" : "http://dresende.github.io/node-orm2",

"dependencies": {
"async" : "2.1.4",
"enforce" : "0.1.6",
"sql-query" : "0.1.26",
"sql-ddl-sync" : "0.3.12",
"hat" : "0.0.3",
"lodash" : "4.17.2",
"path-is-absolute" : "1.0.1"
"path-is-absolute" : "1.0.1",
"sql-query" : "0.1.26",
"sql-ddl-sync" : "0.3.12"
},

@@ -52,3 +53,2 @@ "devDependencies": {

"sqlite3" : "3.1.8",
"async" : "1.5.2",
"mocha" : "3.2.0",

@@ -55,0 +55,0 @@ "should" : "11.1.1",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc