Javascript 将followers子文档扩展到Mongoose/Express中的控制器

Javascript 将followers子文档扩展到Mongoose/Express中的控制器,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,因此,目前我有一个子文档,其中包含一个objectid数组,用户可以添加他们想要跟随的对象。我只是不确定如何使用属于经过身份验证的用户的子文档正确地实现crud模块。不幸的是,它停留在更新状态 目前,我的模式是这样的: var UserSchema = new Schema({ firstName: { type: String, trim: true, default: '', validate: [validateLocalStrategyProperty

因此,目前我有一个子文档,其中包含一个objectid数组,用户可以添加他们想要跟随的对象。我只是不确定如何使用属于经过身份验证的用户的子文档正确地实现crud模块。不幸的是,它停留在更新状态

目前,我的模式是这样的:

var UserSchema = new Schema({
  firstName: {
    type: String,
    trim: true,
    default: '',
    validate: [validateLocalStrategyProperty, 'Please fill in your first name']
  },
  lastName: {
    type: String,
    trim: true,
    default: '',
    validate: [validateLocalStrategyProperty, 'Please fill in your last name']
  },
  displayName: {
    type: String,
    trim: true
  },
  username: {
    type: String,
    unique: 'testing error message',
    required: 'Please fill in a username',
    trim: true
  },
  //* For following we create an array of ObjectId's*//
  following: [{
    type: ObectId,
    ref: 'User'
  }], 

});
为了简洁起见,删除了很多模式

这就是我到目前为止更新数组的方法,但在测试时它似乎不起作用

'use strict';

/**
 * Module dependencies.
 */
var _ = require('lodash'),
    errorHandler = require('../errors'),
    mongoose = require('mongoose'),
    User = mongoose.model('User');

/**
 * Updating Following array
 */
exports.update = function(req, res){
  var user = req.user; 

  delete req.body.roles; 

  user.following = .push(_.extend(user, req.body));

  user.following.save(function(err){
    if (err){
      return res.status(400).send({
        message: errorHandler.getErrorMessage(err)
      });
    } else {
      res.jsonp(following);
    }
  });
};

为了简洁起见,又删除了一些内容。

如何调用
exports.update()
?您的失败案例是什么?另一个是
user.following=.push(u.extend(user,req.body))看起来不正确,您可能需要
user.following.push(uu.extend(user,req.body))(假设要添加到以下数组的内容是req.user加上req.body属性)您认为需要扩展到当前用户的哪些属性?您是否已经有了一个
following
属性?我想我误解了.extend的详细用法。感谢您的帮助,Plato,我将编辑我的控制器,看看我的测试是否返回我的期望值。仅供参考,-.extend是将目标对象附加到源对象。assign是新的.extend。