我正在制作一个非常简单的用户身份验证系统。我正在尝试将username
和password
的组合作为params传递给后端nodejs服务器。因此,我的数据库查询将使用此组合来获取用户详细信息。
这是我在前端尝试的内容:
var user = new UserModel({id:['username', 'password']});
user.fetch();
我在模型中定义了一个urlRoot属性,如下所示:/api/users
后端将处理以下网址:/api/users/:id
由于我已将id作为数组传递,因此我尝试通过执行此req.params.id[0]
来访问“用户名”。相反,它返回'用户名'的第一个字母。但我想要取整个用户名字符串。当然我可以使用split()函数来分隔它们,但我相信有更好的方法可以做到这一点。
请告诉我,我的方法在某处是否有问题。
答案 0 :(得分:1)
这是因为Backbone将您的数组序列化为字符串,然后将其编码为URI组件。
如此有效地发送字符串'username%2Cpassword'
而不是数组。
我遇到了同样的问题并且认为登录过程并不真正代表任何“物理”资源,并且很可能不应该由用户模型处理。登录时,没有CRUD用户。
我所做的是为SignIn
创建一个单独的模型:
SignInModel = Backbone.Model.extend({
urlRoot: 'api/sign_in',
defaults: {
'username' : '',
'password': ''
}
});
静态映射到api/sign_in
(此处没有id),然后通过请求正文中传递给api/sign_in
处理程序的用户名和密码查询数据库。
UserModel
来处理用户的CRUD。