【问题标题】:Strongloop Loopback built-in model extension not being called未调用 Strongloop Loopback 内置模型扩展
【发布时间】:2015-08-02 06:30:17
【问题描述】:

不确定我在这里缺少什么。我正在尝试使用他们文档中的示例扩展 Loopback 中的内置用户模型:http://docs.strongloop.com/display/public/LB/Extending+built-in+models#Extendingbuilt-inmodels-ExtendingamodelinJavaScript

但是,我创建的文件./common/models/user.js 永远不会被应用程序加载,这当然意味着我的扩展代码永远不会被调用。由于文档是错误的,关于正确方法的任何想法?这是我目前所拥有的(不是相关的,因为框架从不加载文件):

console.log('User.js file being loaded');
module.exports = function(User){
  User.on('attached', function(){
    console.log(User);
  });
};

请注意,控制台语句都不会触发。

【问题讨论】:

    标签: loopbackjs


    【解决方案1】:

    您是否完成了 model-config.json 设置?那里已经有一个User 条目,您需要添加一个小写的user 条目才能加载您的扩展模型。

    ...
    // built-in User model
    "User": {
      "dataSource": "db"
    },
    // extends user 
    "user": {
      "dataSource": "db"
    }
    ...
    

    您还需要一个user.json 文件,指定它将使用"base": "User" 扩展内置的User 模型(您可以在node_modules/loopback/common/models/ 中找到内置的User.json 和.js):

    {
      "name": "user",
      "base": "User",       // will include all User props
      "idInjection": true,
      "properties": {
        "pincode": {
          "type": "number"  // only add new props here
        }
      },
      "validations": [],
      "relations": {},
      "acls": [],
      "methods": []
    }
    

    但我建议使用除小写用户之外的其他名称来扩展大写用户,因为这很容易混淆两者。我个人使用过PlayerPerson(自定义复数People)而不是user

    【讨论】:

    • 是的,我在发布此内容后最终弄清楚了。从文档中,我假设我可以只使用我需要的东西来扩展内置模型并继续使用内置模型。即就地修改。你是对的,虽然你真的最终创建了一个全新的模型,然后除了作为原型之外从不使用内置模型。
    猜你喜欢
    • 2015-10-16
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    相关资源
    最近更新 更多