Don't throw in Zotero.DataObjects::get() for nonexistent objects

Return false for single ids or skip for multiple ids. This is the original
behavior, but at some point it started throwing an UnloadedDataException. IDs
are always loaded at initialization, though, so we know whether the objects
actually exist.
This commit is contained in:
Dan Stillman 2016-05-05 06:03:32 -04:00
parent bf3ad6a2a4
commit ab4138cf26
2 changed files with 16 additions and 1 deletions

View File

@ -118,7 +118,16 @@ Zotero.DataObjects.prototype.get = function (ids) {
let id = ids[i];
// Check if already loaded
if (!this._objectCache[id]) {
throw new Zotero.Exception.UnloadedDataException(this._ZDO_Object + " " + id + " not yet loaded");
// If unloaded id is registered, throw an error
if (this._objectKeys[id]) {
throw new Zotero.Exception.UnloadedDataException(
this._ZDO_Object + " " + id + " not yet loaded"
);
}
// Otherwise ignore (which means returning false for a single id)
else {
continue;
}
}
toReturn.push(this._objectCache[id]);
}

View File

@ -3,6 +3,12 @@
describe("Zotero.DataObjects", function () {
var types = ['collection', 'item', 'search'];
describe("#get()", function () {
it("should return false for nonexistent objects", function* () {
assert.isFalse(Zotero.Items.get(3464363));
});
});
describe("#getLibraryAndKeyFromID()", function () {
it("should return a libraryID and key within a transaction", function* () {
for (let type of types) {