将数据从 Node 发送到 Angular 以用于 ng-repeat 的正确方法。

Proper way to send data from Node to Angular for use in ng-repeat.

首先让我说我对 Node 和 Angular 还很陌生。

我有两个模型,一个用于物品,另一个用于用户。我的项目模型有一个 "owner" 属性,它是创建它的用户的 ID。我有一个 angular 控制器来处理物品。在项目控制器中,我想创建一个接受用户 ID 和 returns 关联用户名的函数。现在,我尝试了两种方式。一个是将用户列表作为资源并将其传递给项目控制器。我还尝试将此代码添加到用户服务器路由并在用户控制器中添加相应的 $http.get 。

app.route('/users/:userId')
    .get(users.read);

app.param('userId', users.userByID);

我不确定我应该使用哪种方法,并且我 运行 在调用我的函数时尝试在视图中 ng-repeat 对应于项目控制器的项目时遇到了麻烦在每个 "owner" 属性上。我一直在将我的数据绑定到 $scope.ownerName。感谢您的任何建议。

也许您可以像 Mongoose 那样使用某种填充函数 (http://mongoosejs.com/docs/populate.html)。在您的情况下,itemuser 是一对多的关系。每个项目都有一个所有者用户,每个用户可以拥有多个项目。假设您的模型 itemuser 也在服务器端使用,我将提供一种服务器端方法来填充项目列表并将所有者字段替换为相应的用户。例如

items = [{id:"item1",owner:"user1"},{id:"item2",owner:"user2"}]

填充

users = [{id:"user1",username:"user A"},{id:"user2",username:"user B"}]

结果变成

items = [
  {id:"item1",owner:{id:"user1",username:"user A"}},
  {id:"item2",owner:{id:"user2",username:"user B"}}
]

然后您可以通过调用

访问所有者的用户名
items[0].owner.username