lykmapipo / sails-hook-validation

Custom validation error messages for sails model with i18n support
104 stars 29 forks source link

Unique not working with primary key #47

Open cindybinle2 opened 8 years ago

cindybinle2 commented 8 years ago

Hi, i set up attribute in model with:

ma_nhan_vien: {
            type: 'string',
            required:true,
            unique:true,
            maxLength:25,
            primaryKey: true,
            notContains:' '
            }

and validation messgae

        ma_nhan_vien: {
            required: 'Vui lòng nhập mã nhân viên',
            unique: 'Mã nhân viên đã có sẵn',
            maxLength:'Mã nhân viên không thể vượt quá 25 ký tự',
            notContains:'Mã nhân viên không thể chứa khoảng trắng'
        }

But it not return message

[{ "error": "E_VALIDATION", "status": 400, "summary": "1 attribute is invalid", "invalidAttributes": { "PRIMARY": [ { "value": "NV01", "rule": "unique", "message": "A record with that PRIMARY already exists (NV01)." } ] }, "message": "[Error (E_VALIDATION) 1 attribute is invalid] Details: { code: 'E_UNIQUE',\n invalidAttributes: { PRIMARY: [ [Object] ] },\n originalError: [Circular] }\n", "stack": "Error (E_VALIDATION) :: 1 attribute is invalid\n at new WLError (D:\code\devme\stec_sctm_system\node_modules\sails-hook-validation\node_modules\waterline\lib\waterline\error\WLError.js:26:15)\n at Object.module.exports.patch (D:\code\devme\stec_sctm_system\node_modules\sails-hook-validation\lib\WLValidationError.js:8:13)\n at D:\code\devme\stec_sctm_system\node_modules\sails-hook-validation\lib\create.js:66:48\n at D:\code\devme\stec_sctm_system\node_modules\sails-hook-orm\node_modules\waterline\lib\waterline\query\dql\create.js:223:14\n at wrapper (D:\code\devme\stec_sctm_system\node_modules\sails-hook-orm\node_modules\lodash\index.js:3592:19)\n at applyInOriginalCtx (D:\code\devme\stec_sctm_system\node_modules\sails-hook-orm\node_modules\waterline\lib\waterline\utils\normalize.js:421:80)\n at wrappedCallback (D:\code\devme\stec_sctm_system\node_modules\sails-hook-orm\node_modules\waterline\lib\waterline\utils\normalize.js:335:16)\n at callback.error (D:\code\devme\stec_sctm_system\node_modules\sails-hook-orm\node_modules\switchback\lib\normalize.js:42:31)\n at _switch (D:\code\devme\stec_sctm_system\node_modules\sails-hook-orm\node_modules\switchback\lib\factory.js:56:28)\n at afterwards (D:\code\devme\stec_sctm_system\node_modules\sails-hook-orm\node_modules\waterline\lib\waterline\adapter\dql.js:87:16)\n at wrapper (D:\code\devme\stec_sctm_system\node_modules\sails-hook-orm\node_modules\lodash\index.js:3592:19)\n at applyInOriginalCtx (D:\code\devme\stec_sctm_system\node_modules\sails-hook-orm\node_modules\waterline\lib\waterline\utils\normalize.js:421:80)\n at wrappedCallback (D:\code\devme\stec_sctm_system\node_modules\sails-hook-orm\node_modules\waterline\lib\waterline\utils\normalize.js:335:16)\n at callback.error (D:\code\devme\stec_sctm_system\node_modules\sails-hook-orm\node_modules\switchback\lib\normalize.js:42:31)\n at _switch (D:\code\devme\stec_sctm_system\node_modules\sails-hook-orm\node_modules\switchback\lib\factory.js:56:28)\n at sendBackError (D:\code\devme\stec_sctm_system\node_modules\sails-mysql\lib\connections\spawn.js:97:11)\n at Object.module.exports.poolfully as releaseConnection\n at D:\code\devme\stec_sctm_system\node_modules\sails-mysql\lib\connections\spawn.js:90:37\n at Query._callback (D:\code\devme\stec_sctm_system\node_modules\sails-mysql\lib\adapter.js:395:27)\n at Query.Sequence.end (D:\code\devme\stec_sctm_system\node_modules\sails-mysql\node_modules\mysql\lib\protocol\sequences\Sequence.js:96:24)\n at Query.ErrorPacket (D:\code\devme\stec_sctm_system\node_modules\sails-mysql\node_modules\mysql\lib\protocol\sequences\Query.js:94:8)\n at Protocol._parsePacket (D:\code\devme\stec_sctm_system\node_modules\sails-mysql\node_modules\mysql\lib\protocol\Protocol.js:280:23)" }

](url)

PauloLira commented 7 years ago

+1

armellarcier commented 7 years ago

it's using the PRIMARY property, which does not exist in your validationMessages. I guess it should work if you create the PRIMARY property with the same configuration.

armellarcier commented 7 years ago

@thuanitdn @PauloLira can you please give feedback to my comment?