Auth0 自定义数据库 mongodb,注册脚本返回 SandboxTimeoutError
Posted
技术标签:
【中文标题】Auth0 自定义数据库 mongodb,注册脚本返回 SandboxTimeoutError【英文标题】:Auth0 custom database mongodb, signup script is returning SandboxTimeoutError 【发布时间】:2017-03-19 21:22:41 【问题描述】:我正在尝试使用在mlab 和auth0 中创建的我自己的mongo 数据库进行用户管理。这是他们提供的模板。
function create (user, callback)
mongo('mongodb://user:pass@mymongoserver.com/my-db', function (db)
var users = db.collection('users');
users.findOne( email: user.email , function (err, withSameMail)
if (err) return callback(err);
if (withSameMail) return callback(new Error('the user already exists'));
bcrypt.hashSync(user.password, 10, function (err, hash)
if (err) return callback(err);
user.password = hash;
users.insert(user, function (err, inserted)
if (err) return callback(err);
callback(null);
);
);
);
);
更改连接 URI 后,我尝试通过在脚本中提供电子邮件和密码来“创建”用户。我看到以下错误:
[SandboxTimeoutError] Script execution did not complete within 20 seconds. Are you calling the callback function?
我遵循了他们提供的调试脚本。这是日志:
$ wt logs -p "myservice-eu-logs"
[12:35:27.137Z] INFO wt: connected to streaming logs (container=myservice)
[12:35:29.993Z] INFO wt: new webtask request 1478435731301.992259
[12:35:30.047Z] INFO wt: [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND'
[12:35:30.047Z] INFO wt: js-bson: Failed to load c++ bson extension, using pure JS version
[12:36:05.080Z] INFO wt: finished webtask request 1478435731301.992259 with HTTP 500 in 35096ms
有什么建议吗?
【问题讨论】:
看起来您缺少一些外部文件/模块? 针对 Node.js 的 here 发布了类似的问题。但是,我不知道在哪里可以访问 Auth0 中的bson
变量。
【参考方案1】:
其实bcrypt.hashSync
是同步方法,所以回调函数永远不会被调用,脚本会超时。
任意使用:
var hashedPwd = bcrypt.hashSync(user.password);
或
bcrypt.hash(user.password,10,function(....);
【讨论】:
太棒了。我用bcrypt.hash
替换了bcrypt.hashSync
电话,这解决了这个问题。非常感谢。以上是关于Auth0 自定义数据库 mongodb,注册脚本返回 SandboxTimeoutError的主要内容,如果未能解决你的问题,请参考以下文章