我正在使用sail.js的locklock来管理我的用户。我希望他们有一个唯一的用户名,所以我有这个在我的user.js的:Sails.js Waterlock - 唯一的用户名
module.exports = {
autoPk : false,
attributes: require('waterlock').models.user.attributes({
id : {
type : "string",
primaryKey : true,
unique : true
}
}),
beforeCreate: require('waterlock').models.user.beforeCreate,
beforeUpdate: require('waterlock').models.user.beforeUpdate
};
我Auth.js看起来是这样的:
而且我创建的用户是这样的:
auth = {
username: params.username,
password: params.password
};
userObj = {
id: params.username
};
User.create(userObj)
.exec(function (err, user) {
if (err) {
sails.log.error("USER: " + err);
req.session.flash = {
err: err
};
return res.json(err);//res.redirect('/user/create');
} else {
req.session.user = user;
waterlock.engine.attachAuthToUser(auth, user, function (err) {
if (err) {
sails.log.error("AUTH: " + err);
return res.json(err);
} else {
req.session.authenticated = true;
return res.json({ok: true});
}
});
}
});
很明显,我想创建一个用户失败,当一个具有相同的ID已经存在。但是,由于对用户名的唯一限制,用户的创建以及创建auth失败。但是,一旦失败,我已经有两个用户在我的数据库中具有相同的ID,没有附加任何身份验证。这是为什么发生?我正在使用节点v0.12.1,风帆0.11和水锁0.14。我使用的适配器是带有{migrate:“alter”}的内置sails-disk。另一个奇怪的是:当我重新启动sails时,它会询问我是否应删除用户表中的重复项。为什么它会识别它们,但是当我创建用户时不能识别它们? 感谢您的帮助, 亚历山大
我认为他们默认情况下是唯一的?帆船可能是聊天的好地方:https://gitter.im/balderdashy/sails。 – 2015-04-03 23:25:15
是的,primaryKeys应该是唯一的,我只是添加了“unique:true”来检查是否改变了任何东西... – AlexanderF 2015-04-04 00:41:31