I have defined a waterline model below:
var Waterline = require('Waterline');
var bcrypt = require('bcrypt');
var User = Waterline.Collection.extend({
identity: 'user',
datastore: 'myMongo',
autoPK: false,
attributes: {
id: {
type: 'integer',
autoIncrement: true,
primaryKey: true
},
email: {
type: 'string',
email: true,
required: true,
unique: true
},
username: {
type: 'string',
required: true,
},
image: {
type: 'string'
},
password: {
type: 'string',
required: true
},
mobNo: {
type: 'string',
required: true
},
aadharNo: {
type: 'string',
required: true
},
toJSON: function () {
var obj = this.toObject();
delete obj.password;
return obj;
}
},
beforeCreate: function (values, next) {
var bcrypt = require('bcrypt');
bcrypt.genSalt(10, function (err, salt) {
if (err) return next(err);
bcrypt.hash(values.password, salt, function (err, hash) {
if (err) return next(err);
values.password = hash;
next();
});
});
}
});
module.exports = User;
When initializing the application, I encountered an error regarding waterline:
userError: Could not find a primary key attribute on the model `user`. All models must contain an attribute that acts as the primary key and is guaranteed to be unique.
at normalizeCollection (C:\Users\shriko\WebstormProjects\baclasses\node_modules\waterline-schema\lib\waterline-schema\schema.js:85:44)
at arrayEach (C:\Users\shriko\WebstormProjects\baclasses\node_modules\@sailshq\lodash\lib\index.js:1439:13)
at Function.<anonymous> (C:\Users\shriko\WebstormProjects\baclasses\node_modules\@sailshq\lodash\lib\index.js:3500:13)
at schemaBuilder (C:\Users\shriko\WebstormProjects\baclasses\node_modules\waterline-schema\lib\waterline-schema\schema.js:34:5)
at new WaterlineSchema (C:\Users\shriko\WebstormProjects\balajiclasses\node_modules\waterline-schema\lib\waterline-schema.js:36:12)
at Object.initialize (C:\Users\shriko\WebstormProjects\baclasses\node_modules\waterline\lib\waterline.js:581:26)
at Object.<anonymous> (C:\Users\shriko\WebstormProjects\baclasses\bin\www:32:18)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Function.Module.runMain (module.js:676:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
Despite setting autoPK to false and defining a manual primary key, I am still facing this issue.
I am using "waterline": "^0.13.1-9" with express. Any suggestions on how to create a primary key would be appreciated. Thank you!