环回 <model>.verify 不是 function\n

Loopback <model>.verify is not a function\n

所以,我阅读了有关管理用户的文档。我也来自这个例子:link.

然后我尝试制作一个模型,称为 user-basic,它基于内置模型 User。这是用户-basic.json:

{
  "name": "user-basic", 
  "base": "User",
  "idInjection": true, 
  "properties": {},
  "validations": [],
  "relations": {},
  "acls": [
    {
      "principalType": "ROLE",
      "principalId": "$everyone",
      "accessType": "READ",
      "permission": "ALLOW"
    }
  ],
  "methods": {}
}

这是用户-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 尝试 POST 一个新用户。它给我一个错误:

{
  "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)"
  }
}

当我检查数据库时,我得到了我最近 POST 的用户数据。你们能告诉我我错过了什么吗? 请帮助

Note: member.verify() or user.verify() is a prototype function.

试试这个。 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();
              }
            });

          });