2017-07-30 54 views
0

我使用的貓鼬用MongoDB的v3.4.3如何將另一個架構數據添加到模型中?

下面是我的圖像模型代碼

const mongoose = require("mongoose"); 
const CoordinateSchema = require("./coordinate"); 

const ImageSchema = new mongoose.Schema({ 
    image_filename: { 
     type: String, 
     required: true 
    }, 
    image_url: { 
     type: String, 
     required: true 
    }, 
    coordinates: [CoordinateSchema], 
}); 

下面是我CoordinateSchema代碼

const mongoose = require("mongoose"); 

const CoordinateSchema = new mongoose.Schema({ 
    coordinates : { 
     type: Array, 
     default: [], 
    } 
}); 

module.exports = CoordinateSchema; 

下面是在快遞運行我的API的js代碼,

router.post('/receiveCoordinates.json', (req, res, next) => { 

     Image.findOneAndUpdate({image_filename:req.body.file_name}).then((image) => { 


     }) 
    }); 

如何完成此代碼,所以我c商店座標數據在圖像模型中。

謝謝。

+0

你使用什麼版本的貓鼬? –

+0

@JoseLopezGarcia我正在使用Mongodb v3.4.3。我更新了問題,我發現我可以使用findOneAndUpdate – Dreams

+0

我問你的貓鼬版本,而不是MongoDB!順便檢查我的答案,如果它不起作用,讓我知道,所以我們可以制定一個解決方案 –

回答

1

UPDATE

要更新findOneAndUpdate內的座標,只需檢查返回的文件是不是不確定的(這將意味着你的圖片未找到)。修改您的api.js代碼如下所示:

router.post('/receiveCoordinates.json', (req, res, next) => { 
    Image.findOneAndUpdate({image_filename:req.body.file_name}).then((image) => { 
     if (!image) return Promise.reject(); //Image not found, reject the promise 
     image.where({_id: parent.children.id(_id)}).update({coordinates: req.body.coordinates}) //Needs to be an array 
      .then((coords) => { 
       if (!coords) return Promise.reject(); 
       //If you reach this point, everything went as expected 
      }); 
    }).catch(() => { 
     console.log('Error occurred'); 
    ); 
}); 

這裏是我的猜測,爲什麼它不工作。

ImageSchema中,您正在亞嵌套一組CoordinateSchema。但CoordinateSchema是一個文檔,其中已經包含數組

這可能不是你要找的。如果您使用的是貓鼬版本4.2.0或更高版本,則可以將ImageSchema中的CoordinateSchema作爲單個文檔嵌套。重新寫你的ImageSchema這樣的:

// ... 

const ImageSchema = new mongoose.Schema({ 
    // ... 
    coordinates: CoordinateSchema, 
}); 

如果沒有工作或者沒有解決您的問題,請讓我知道,所以我們可以共同努力,找到一個解決方案。

+0

謝謝你。我更新了我發現可以使用findOneAndUpdate但不知道如何完成的問題 – Dreams

+0

找到之後你想要做什麼? –

+0

我想更新圖像記錄中的座標數據。 – Dreams

相關問題