所以,我阅读了有关管理用户的文档。我也来自这个例子:link。
然后我尝试制作一个名为user-basic的模型,它基于内置模型User。这是user-basic.json:
{
"name": "user-basic",
"base": "User",
"idInjection": true,
"properties": {},
"validations": [],
"relations": {},
"acls": [
{
"principalType": "ROLE",
"principalId": "$everyone",
"accessType": "READ",
"permission": "ALLOW"
}
],
"methods": {}
}
这里是user-basic.js
var config = require('../../server/config.json');
var path = require('path');
module.exports = function(UserBasic) {
UserBasic.afterRemote('create', function(ctx, member, next) {
console.log('> user.afterRemote triggered');
var options = {
type: 'email',
to: UserBasic.email,
from: 'noreply@loopback.com',
subject: 'Thanks for registering.',
template: path.resolve(__dirname, '../../server/views/verify.ejs'),
redirect: '/verified',
user: UserBasic
};
UserBasic.verify(options, function(err) {
console.log('aaaaa', member.location, err);
if (err) {
next(err);
} else {
next();
}
});
});
//send password reset link when requested
UserBasic.on('resetPasswordRequest', function(info) {
var url = 'http://' + config.host + ':' + config.port + '/reset-password';
var html = 'Click <a href="' + url + '?access_token=' +
info.accessToken.id + '">here</a> to reset your password';
UserBasic.app.models.Email.send({
to: info.email,
from: info.email,
subject: 'Password reset',
html: html
}, function(err) {
if (err) return console.log('> error sending password reset email');
console.log('> sending password reset email to:', info.email);
});
});
};
这是我的数据源:
"emailDs": {
"name": "emailDs",
"connector": "mail",
"transports": [
{
"type": "smtp",
"host": "smtp.gmail.com",
"secure": true,
"port": 465,
"tls": {
"rejectUnauthorized": false
},
"auth": {
"user": "aaa@gmail.com",
"pass": "aaa"
}
}
]
}
这是我的模型配置:
"user-basic": {
"dataSource": "cloudant-pop",
"public": true,
"options": {
"emailVerificationRequired": true
}
}
我运行了服务器并尝试通过http://0.0.0.0:3008/explorer发布新用户。它给了我一个错误:
{
"error": {
"name": "TypeError",
"status": 500,
"message": "UserBasic.verify is not a function",
"stack": "TypeError: UserBasic.verify is not a function\n at /Users/yogieputra/Desktop/backend_powercube/common/models/user-basic.js:23:23\n at Function.<anonymous> (/Users/yogieputra/Desktop/backend_powercube/node_modules/loopback/lib/model.js:207:11)\n at execStack (/Users/yogieputra/Desktop/backend_powercube/node_modules/strong-remoting/lib/remote-objects.js:480:26)\n at RemoteObjects.execHooks (/Users/yogieputra/Desktop/backend_powercube/node_modules/strong-remoting/lib/remote-objects.js:492:10)\n at phaseAfterInvoke (/Users/yogieputra/Desktop/backend_powercube/node_modules/strong-remoting/lib/remote-objects.js:652:10)\n at runHandler (/Users/yogieputra/Desktop/backend_powercube/node_modules/loopback-phase/lib/phase.js:130:5)\n at iterate (/Users/yogieputra/Desktop/backend_powercube/node_modules/loopback-phase/node_modules/async/lib/async.js:146:13)\n at Object.async.eachSeries (/Users/yogieputra/Desktop/backend_powercube/node_modules/loopback-phase/node_modules/async/lib/async.js:162:9)\n at runHandlers (/Users/yogieputra/Desktop/backend_powercube/node_modules/loopback-phase/lib/phase.js:139:13)\n at iterate (/Users/yogieputra/Desktop/backend_powercube/node_modules/loopback-phase/node_modules/async/lib/async.js:146:13)"
}
}
当我检查数据库时,我收到了我最近发布的用户数据。你能告诉我我错过了什么吗? 请帮忙
答案 0 :(得分:4)
注意:member.verify()或user.verify()是原型函数。
试试这个。 member.verify(function .......)即
UserBasic.afterRemote('create', function(ctx, member, next) {
console.log('> user.afterRemote triggered');
var options = {
type: 'email',
to: UserBasic.email,
from: 'noreply@loopback.com',
subject: 'Thanks for registering.',
template: path.resolve(__dirname, '../../server/views/verify.ejs'),
redirect: '/verified',
user: UserBasic
};
member.verify(options, function(err) {
console.log('aaaaa', member.location, err);
if (err) {
next(err);
} else {
next();
}
});
});