簡體   English   中英

使用MEAN堆棧查詢關聯的模型

[英]Querying associated models using MEAN stack

我正在嘗試使用Epic具有許多任務的MEAN來建立模型關聯。 我先創建Epic,然后在創建任務時將其關聯。 任務數據模型與Epic相關聯,如下所示:

task:
   { name: 'my first task',
     epic:
      { name: 'My fist epic',
        _id: 52f511c605456ba4c936180d,
        __v: 0},
     _id: 52f511d605456ba4c936180e,
     __v: 0 } }

在我的公共Epics控制器中,我正在嘗試使用當前Epic的ID查詢所有任務,但是我運氣不高。 下面的查詢返回所有任務,而不是與我的Epic相關的任務。

Tasks.query({“epic._id": $routeParams.epicId}, function(tasks) {
    $scope.tasks = tasks;
});

有沒有使用MEAN進行關聯和檢索的更好方法? 我有點菜鳥。 提前致謝!

編輯:我一直在創建一個新任務時更新史詩的想法。 在app / controllers / tasks.js中,此代碼不起作用。

exports.create = function (req, res) {
  var task = new Task(req.body)
  Epic.find(req.body.epic.id, function (err, epic) {
    if (err) return next(err)
    epic.tasks.push(task.id);
    epic.save();
  })
  task.save()
  res.jsonp(task)
} 

您還在使用貓鼬嗎? 我會使用“參考”和“填充”。 首先,您有一個TaskSchema。

var TaskSchema = new Schema({  ...  });
mongoose.model('Task', TaskSchema);  

添加模型等,然后在其他架構中引用它。 我將添加一個或多個任務的示例。

var Schema = new Schema({
   task: {
    type: Schema.ObjectId,
    ref: 'Task'
   },
   tasks: [
     { type: Schema.Types.ObjectId, ref: 'Task'}
   ]
});

然后用填充來調用它。

this.findOne({
    _id: id
}).populate('tasks').exec(cb);

看來您需要協助調試xhr。 讓我們跟蹤步驟:

  • 您的請求是否發送到服務器?
  • 它到達正確的快遞路線了嗎?
  • 您的服務器端代碼是否針對Mongo執行了正確的查找操作?
  • Mongo是否返回正確的結果?
  • 您是否將Mongo的結果正確寫入響應中?
  • 通過使用瀏覽器的開發工具檢查網絡流量,您是否能夠在客戶端上看到響應?
  • 您是否正確處理了諾言成功?

您需要發布更多信息和代碼以了解問題所在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM