LoopBack AngularJS扩展用户模型

时间:2015-04-05 14:31:43

标签: angularjs loopbackjs strongloop

我在AngularJS应用程序中使用扩展用户模型时遇到了一些问题。

这是我的user.json:

{
  "name": "user",
  "base": "User",
  "strict": false,
  "idInjection": true,
  "properties": {
    "clientType": {
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {},
  "acls": [
    {
      "accessType": "READ",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "ALLOW"
    }
  ],
  "methods": []
}

这是我的model-config.json:

{
  "_meta": {
    "sources": [
      "loopback/common/models",
      "loopback/server/models",
      "../common/models",
      "./models"
    ]
  },
  "User": {
    "dataSource": "mongo"
  },
  "AccessToken": {
    "dataSource": "mongo",
    "public": false
  },
  "ACL": {
    "dataSource": "mongo",
    "public": false
  },
  "RoleMapping": {
    "dataSource": "mongo",
    "public": false
  },
  "Role": {
    "dataSource": "mongo",
    "public": false
  },
  "Store": {
    "dataSource": "mongo",
    "public": true
  },
  "user": {
    "dataSource": "mongo",
    "public": true
  }
}

这是我的UserCtrl.js

angular.module('app.controllers.user', [])

    .controller('UserCtrl', ['user', function (user) {

        var vm = this;

        vm.addUser = function () {
            user.create({
                firstName: vm.firstName,
                lastName: vm.lastName,
                email: vm.email,
                password: vm.password,
                userType: 'customer'
            })
                .$promise
                .then(function (c) {
                    console.log('added user: ' + c.email);
                });
        };
    }])

我收到以下错误:

错误:[$ injector:unpr]未知提供商:userProvider< - user< - UserCtrl

如果我使用' 用户'而不是' 用户'它有效,但它没有使用我的扩展用户模型和指定的ACL(每个人都阅读)

我已经读过您可以指定var myUser = app.model.user以确保LoopBack使用扩展模型。但我不知道如何在AngularJS中做到这一点,因为我在控制器中将模型指定为函数参数。

你能告诉我如何在我的AngularJS应用程序中使用我的扩展用户模型吗?

提前感谢!!

2 个答案:

答案 0 :(得分:0)

您是否在Angular客户端库中生成了用户模型?如果您的应用程序在您使用环回自动生成"用户"模型,那么我最好的猜测是,在最初生成角度服务之后,您已经创建了扩展模型" user"。如果您没有使用grunt任务,那么您应该重新生成角度服务,以使用自上次生成文件后添加的所有更改和新模型更新文件。

使用lb-ng命令执行此操作。正如文件所示

  

例如,如果您的应用程序具有标准的LoopBack项目布局,则在/ client子目录中输入以下命令:

$ mkdir js
$ lb-ng ../server/server.js js/lb-services.js

您可以在以下链接中找到更多信息 http://docs.strongloop.com/display/public/LB/AngularJS+JavaScript+SDK

答案 1 :(得分:-3)

您需要定义名为“user”的服务,工厂,提供者,值或常量,以便在您的控制器中注入服务。我在你的帖子中没有看到这些。

我的建议是,如果您的扩展用户模型是类的实例,那么请使用服务:

app.service('user', fn);

如果您的扩展用户模型是JSON格式的对象文字,那么请使用工厂:

app.factory('user', function() { return { ... }; });