import * as RPC from 'json-rpc-core';
import {utils, validate} from './utils';
@RPC.module()
export default class Users {
@RPC.params({
email: {type: String, coerce: utils.trim, validate: validate.isEmail},
name: {type: String, coerce: utils.trim, default: null},
surname: {type: String, coerce: utils.trim, default: null}
})
static async subscribe(params) {
let doc = {email: params.email};
if (params.name) {
doc.name = params.name;
}
if (params.surname) {
doc.surname = params.surname;
}
let resp = {success: false};
try {
let result = await db.main.users.insertOne(doc);
if (result._id) {
resp.success = true;
}
} catch (error) {
// We have unique index by email field
// Here we catch duplicate error key and return success
// If we get other errors, we will re-throw them
if (error.name == 'MongoError' && error.code == 11000) {
console.log('Email already exists, so ignoring it and returning success!');
resp.success = true;
} else {
throw error;
}
}
return resp;
}
}
Created
October 18, 2016 12:57
-
-
Save umidjons/2bef8bb80c041c0fdd4e69dd7175121a to your computer and use it in GitHub Desktop.
Catch duplicate error (E11000) key index in MongoDB
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment