2017-06-14 35 views
0

我是Mongo和Express的新手。我正在构建一个简单的应用程序,让公司向员工发送问题,请求反馈。我努力将员工(用户)作为一个数组放在问题文档中。这是我的模式[不知道我是否正确写入]。POST数据不会保存阵列

//question schema 
var QuestionSchema = Schema({ 
    id   : ObjectId, 
    title  : String, 
    employees : [{ type: ObjectId, ref: 'User'}] 
}); 

module.exports = mongoose.model('Question', QuestionSchema); 

//user schema 
var UserSchema = Schema({ 
    username : String, 
    response : String, 
    questions : [{ type: ObjectId, ref: 'Question'}] 
}); 

module.exports = mongoose.model('User', UserSchema); 

api.js

router.post('/', function (req, res) { 
    // make sure user is authenticated 
    User.findOne({ username: req.body.username }).exec(function(err, user) { 
     if(err) throw err; 

     if(!user) { 
      res.json({ success: false, message: 'Could not authenticate user' }) 
     } else if (user){ 

      /*----------------save example----------------------*/ 
      var question = new Question({ title: 'Should we buy a coffee machine?'}); 

      question.save(function (err) { 
       if (err) throw err; 

       var user1 = new User({ 
        username: "marcopolo", 
        response: "yes", 
       }); 

       user1.save(function (err) { 
        if (err) throw err; 
       }); 
      }); 

      console.log('entry saved >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'); 
     } 
    }); 
}); 

enter image description here

UPDATE(雇员表)

enter image description here

+0

您确定QuestionSchema中的自动实现的ID正在工作吗?我指的是'ObjectId' – Jesper

+0

@Jesper是的。我添加了第二个快照来显示其中的员工表具有相同的问题。不显示在问题阵列 –

回答

2

我因为你实际上并没有将一个用户引用数组传递给employees字段。

var question = new Question({ title: 'Should we buy a coffee machine?', employees: [array of user references]}); 

你打算怎么做是另一回事。如果用户可用,则可以通过发布请求传递数组,在这种情况下,它可以在req.body.employees中提供,或者传递用户的ID和您刚创建的问题。

var question = new Question({ 
    title: 'Should we buy a coffee machine?' 
}); 
var user1 = new User({ 
    username: "marcopolo", 
    response: "yes", 
}); 

question.employees = [user1._id]; 
user1.questions = [question._id]; 

question.save(function(err) { 
    if (err) throw err; 
    user1.save(function(err) { 
     if (err) throw err; 
    }); 
}); 
+0

工作中回答的问题!谢谢。现在,我至少可以在''员工''问题'阵列中看到一名员工。即使在创建数组时,我现在也在努力增加更多员工。我可能会发布另一个问题,并在链接中引用此问题。 –