如何在meanjs中填充当前用户的朋友?

时间:2014-08-12 13:25:24

标签: node.js angularjs mongoose meanjs mongoose-populate

我想在angularjs页面中显示Authenticated用户的朋友。

// Find a list of Friends
    $scope.find = function() {
        $scope.friends = Authentication.user.friends;
        $scope.firstFriendName = Authentication.user.friends;
    };

我正在使用带有nodejs的mongoose。(MeanJS)

如何在meanjs中填充当前用户的朋友?

感谢。

2 个答案:

答案 0 :(得分:0)

扩展用户对象或添加自定义模型,例如Person,包括用户引用和朋友列表:

/**
 * Person Schema
 */
var PersonSchema = new Schema({
    name: {
        type: String,
        default: '',
        required: 'Please fill Person name',
        trim: true
    },
    desc:{
      type: String,
      default: '',
      trim: true
    },
    friends:[{
      rate: Number,
      date: Date
    }],
    ,
    created: {
        type: Date,
        default: Date.now
    },
    user: {
        type: Schema.ObjectId,
        ref: 'User'
    }
});

mongoose.model('Person', PersonSchema);

然后编写相应的控制器和视图。或者只使用meanJS生成器:

  

yo meanjs:crud-module Persons

然后向模块添加适当的更改。顺便说一句,有一个类似的东西的包,似乎修补了用户模式:moongose-friends

答案 1 :(得分:0)

var PersonSchema = new Schema({
    name: {
        type: String,
        default: '',
        required: 'Please fill Person name',
        trim: true
    },
    desc:{
      type: String,
      default: '',
      trim: true
    },
    friends:[{
      type: Schema.ObjectId,
      ref: 'User'
    }],
    ,
    created: {
        type: Date,
        default: Date.now
    },
    user: {
        type: Schema.ObjectId,
        ref: 'User'
    }
});

然后你将使用MEANJS使用的Mongoose内置的populate()方法。如果使用生成器构建CRUD模块,您实际上可以看到它是如何工作的。然后,您可以查看特定视图的快速控制器,您将看到它如何使用populate()(这是您在生成crud模块时在快速控制器中看到的list函数。

Friends.find().sort('-created').populate('user', 'displayName').exec(function(err, friends) {
    // Handle error & return friends code here
});

希望有所帮助。然后,您需要查看角度控制器和视图,以便您可以修改控制器中的对象并将其反映在视图中。