0

我正在制作一个非常简单的用户身份验证系统。我正在尝试将usernamepassword作为参数的组合传递给后端nodejs服务器。所以这个组合将在我的数据库查询中用于获取用户详细信息。

这是我在前端尝试的:

var user = new UserModel({id:['username', 'password']});
user.fetch();

我在我的模型中定义了一个 urlRoot 属性,如下所示:/api/users

后端将处理以下 url:/api/users/:id

在这里,由于我已将 id 作为数组传递,因此我尝试通过执行此操作来访问“用户名” req.params.id[0]。相反,它返回“用户名”的第一个字母。但我想获取整个用户名字符串。当然,我可以使用 split() 函数将它们分开,但我相信有更好的方法来做到这一点。

请告诉我我的方法是否有问题。

4

1 回答 1

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。

于 2012-12-24T10:20:13.447 回答