如何在Strongloop loopback scaffolded项目中覆盖基本用户?

时间:2014-07-01 16:33:29

标签: javascript loopbackjs strongloop

鉴于一个全新的项目:

$ slc lb project myapp

如何更换' 用户' models.json中的模型与' 客户'模型放在./models目录中?客户应该具有登录/注销等方法和用户'不应该作为API存在。此外,客户模型不应该是动态的。让我们假装客户应该有如下架构:

  • 名称
  • 电子邮件
  • 密码
  • 问题
  • 答案
  • 电话
  • 验证
  • dataCreated

我已经玩了几天了,我的google-fu让我失望了。任何帮助赞赏。感谢。

1 个答案:

答案 0 :(得分:4)

这是惯用的方式:

  1. models.json中,将user重命名为Customer

  2. models/customer.js中,将自定义方法添加到通过models.json创建的模型中:

    var app = require('../app');
    var Customer = app.models.Customer;
    
    Customer.myfn = function(cb) {
      // etc.
      cb();
    };
    
  3.   

    此外,客户模型不应该是动态的。让我们假装客户应该有如下架构

    使用strict锁定属性:

    {
      "Customer": {
        "options": {
          "base": "User",
          "strict": true
        },
        "properties": {
          // define properties (schema)
        }
      }
    }
    

    有关详细信息,请参阅Model definition reference

    根据此回答下方的评论进行更新

    可以先代码创建模型,请参阅LoopBack的示例应用中的customer.js,该应用是在models.json推出之前构建的。

    以下是您应该在代码中执行的操作:

    var app = require('../app');
    
    var Customer = module.exports = loopback.createModel(
      'Customer',
      {
        name: 'string',
        // and all other more properties
      },
      {
        base: 'User',
        strict: true
      }
    );
    
    app.model(Customer);
    

    这与app.bootmodels.json中所有条目执行的代码基本相同。它应该为您的应用程序添加熟悉的REST路由:GET /customersPOST /customers/loginPOST /customers/logout等。

    如果没有看到不起作用的代码,并且知道你的意思到底是什么意思,那就很难帮助你。#34;不工作"。