Node.js 使用内置模型accessToken在环回中不起作用
我正在尝试为android应用程序编写api,并希望使用node.js+环回来实现这一点。但是我在测试/学习这门语言时遇到了一些困难 下面的代码应该会在我的数据库中生成新用户(确实是这样),但当我尝试使用此用户登录时,没有在控制台中创建一个printen。知道我做错了什么吗 我的测试代码:create-Test-data.jsNode.js 使用内置模型accessToken在环回中不起作用,node.js,strongloop,loopbackjs,Node.js,Strongloop,Loopbackjs,我正在尝试为android应用程序编写api,并希望使用node.js+环回来实现这一点。但是我在测试/学习这门语言时遇到了一些困难 下面的代码应该会在我的数据库中生成新用户(确实是这样),但当我尝试使用此用户登录时,没有在控制台中创建一个printen。知道我做错了什么吗 我的测试代码:create-Test-data.js var-app=require('./app'); var dataSource=app.dataSources.mysql; var loopback=require(
var-app=require('./app');
var dataSource=app.dataSources.mysql;
var loopback=require(‘loopback’);
var User=loopback.User;//获取用户模型
var AccessToken=loopback.AccessToken;//获取AccessTokenModel
/*
初始化数据库时,请执行此操作。如果已经存在,它将清理它。
automigrate('user',function(err){});
自动迁移('account',function(err){});
自动迁移('accesstoken',函数(err){});
*/
//在mysql数据库中创建一些用户
创建({用户名:'timbo',电子邮件:'test@gmail.com,密码:'monkey123'},函数(err,user){console.log(user);};
创建({用户名:'timbo2',电子邮件:'test2@gmail.com,密码:'monkey123'},函数(err,user){console.log(user);};
创建({用户名:'timbo3',电子邮件:'test3@gmail.com,密码:'monkey123'},函数(err,user){console.log(user);};
User.login({username:'timbo',password:'monkey123'},函数(err,accesstoken){console.log(“这是令牌:+accesstoken);});
//数据库中未创建/保存accesstoken
datasource.json
models.json
控制台输出
{ username: 'timbo',
email: 'test@gmail.com',
password: '$2a$10$972DFwMOuOhKj5ThfbchC.ipcNaW27ccpHMRkW17uSLutaCHyZF0G',
realm: undefined,
emailVerified: undefined,
verificationToken: undefined,
credentials: [],
challenges: [],
status: undefined,
created: undefined,
lastUpdated: undefined,
id: undefined }
{ username: 'timbo2',
email: 'test2@gmail.com',
password: '$2a$10$1peSixaOIQq8umOzzEy86OQKxoPFU.Ax2/NWC1oLGjQHPp9oZdPDW',
realm: undefined,
emailVerified: undefined,
verificationToken: undefined,
credentials: [],
challenges: [],
status: undefined,
created: undefined,
lastUpdated: undefined,
id: undefined }
{ username: 'timbo3',
email: 'test3@gmail.com',
password: '$2a$10$X3fdV2dL6kjuj69Dqr.jMeVdqIMzveN7NnJP5TXag54b4tpzZ4LGW',
realm: undefined,
emailVerified: undefined,
verificationToken: undefined,
credentials: [],
challenges: [],
status: undefined,
created: undefined,
lastUpdated: undefined,
id: undefined }
This is the token: undefined
This is the token err: Error: ER_BAD_FIELD_ERROR: Unknown column 'ttl' in 'field list'
您必须首先将与用户相关的模型附加到数据源:
loopback.User.attachTo(dataSource);
loopback.AccessToken.attachTo(dataSource);
loopback.Role.attachTo(dataSource);
loopback.ACL.attachTo(dataSource);
并定义用户
和访问令牌
之间的关系:
loopback.User.hasMany(loopback.AccessToken, {as: 'accessTokens'});
创建测试数据时,应等待User.create
完成,然后再调用User.login
。(记住,Node.js是异步的。)
令牌回调中的
err
值是多少?这是令牌err:Error:ER\u BAD\u FIELD\u Error:FIELD list中的未知列“ttl”我的err对象具有以下数据:{[Error:login failed]statusCode:401}。第一次登录是否需要用户验证或类似的验证?(例如电子邮件)仍然为创建的令牌提供以下错误:ReferenceError:分配中的左侧无效是否需要在mysql中创建一些额外的表或其他内容?请将您的问题发布到环回邮件列表,并包含完整的错误消息,包括堆栈跟踪。
loopback.User.attachTo(dataSource);
loopback.AccessToken.attachTo(dataSource);
loopback.Role.attachTo(dataSource);
loopback.ACL.attachTo(dataSource);
loopback.User.hasMany(loopback.AccessToken, {as: 'accessTokens'});
User.create(
{username: 'timbo', email: 'test@gmail.com', password: 'monkey123'},
function(err, user) {
// TODO: handle err != null
User.login(
{username: 'timbo', password: 'monkey123'},
function(err, accesstoken) {
console.log("This is the token: " + accesstoken);
});
});