【问题标题】:How can I populate friends of current user in meanjs?如何在meanjs中填充当前用户的朋友?
【发布时间】:2023-03-10 20:18:02
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

    要么扩展用户对象,要么添加一个自定义模型,例如 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

    【讨论】:

      【解决方案2】:
      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 模块,您实际上可以看到它是如何工作的。然后您可以查看特定视图的 express 控制器,您将看到它如何使用 populate() (这几乎是您在生成 crud 模块时在 express 控制器中看到的 list 函数。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-20
        • 1970-01-01
        相关资源
        最近更新 更多