2016-01-17 48 views
4

我想添加一个类别,然后如果成功,推它的用户'收集ref。这就是我如何做到这一点:猫鼬 - 推送裁判 - 无法读取属性“推”的未定义

这是我的“dashboard.js”文件,其中包含类别架构。

var users = require('./users'); 

var category = mongoose.model('categories', new mongoose.Schema({ 
    _id:  String, 
    name: String, 
    ownerId: { type: String, ref: 'users' } 
})); 

router.post('/settings/addCategory', function(req, res, next) { 
    console.log(req.body); 
    var category_toAdd = new category(); 
    category_toAdd._id = mongoose.Types.ObjectId(); 
    category_toAdd.name = req.body.categoryName; 
    category_toAdd.ownerId = req.body.ownerId; 

    category.findOne({ 
    name: req.body.categoryName, 
    ownerId: req.body.ownerId 
    }, function(error, result) { 
    if(error) console.log(error); 
    else { 
     if(result === null) { 
     category_toAdd.save(function(error) { 
      if(error) console.log(error); 
      else { 
      console.log("Added category: " + category_toAdd); 
<<<<<<<<<<<<<<<<<<<THE CONSOLE LOG WORKS GOOD 
      users.categories.push(category_toAdd); 
      } 
     }); 
     } 
    } 
    }); 

这里是我的 “users.js” 文件,其中包含 “用户” 模式。

var categories = require('./dashboard'); 

var user = mongoose.model('users', new mongoose.Schema({ 
    _id:   String, 
    login:  String, 
    password:  String, 
    email:  String, 
    categories: [{ type: String, ref: 'categories' }] 
})); 

因此,分类添加过程效果很好,我可以在数据库中找到类别。问题是当我试图将类别推送给用户时。

这条线:

users.categories.push(category_toAdd); 

我得到这个错误:

Cannot read property "push" of undefined. 

我必须承认一次,在此之前推有CONSOLE.LOG在类别正确打印。

谢谢你的时间。

回答

3

users对象是一个Mongoose模型,而不是它的一个实例。您需要使用users模型的正确实例来添加类别。

dashboard.js

... 
category_toAdd = { 
    _id: mongoose.Types.ObjectId(), 
    name: req.body.categoryName, 
    ownerId: req.body.ownerId 
}; 

// Create the category here. `category` is the saved category. 
category.create(category_toAdd, function (err, category) { 
    if (err) console.log(err); 

    // Find the `user` that owns the category. 
    users.findOne(category.ownerId, function (err, user) { 
    if (err) console.log(err); 

    // Add the category to the user's `categories` array. 
    user.categories.push(category); 
    }); 
}); 
相关问题