postedBy
フィールドにobjectidを追加する必要があります。あなたは以下のルートを持っているとしましょう:
router
.route('/logs/')
.get(ctrlLogs.logsGetAll)
.post(ctrlLogs.logsAddOne);
router
.route('/logs/:logid')
.get(ctrlLogs.logsGetOne);
その後、我々は(これはctrlLogs
ある)としてコントローラ機能を定義することができます。
const mongoose = require('mongoose');
const Log = mongoose.model('Log');
module.exports.logsAddOne = (req, res) => {
Log.create({
logTitle: req.body.logTitle,
postedBy: req.body.postedBy
}, (err, newLog) => {
let response = {};
if (err) response = { status: 500, message: err };
else response = { status: 201, message: newLog };
return res.status(response.status).json(response.message);
});
};
module.exports.logsGetAll = (req, res) => {
Log
.find({})
.populate('postedBy')
.exec((err, logs) => {
let response = {};
if (err) response = { status: 500, message: err };
else if (!logs) response = { status: 404, message: [] };
else response = { status: 200, message: logs };
return res.status(response.status).json(response.message);
});
};
module.exports.logsGetOne = (req, res) => {
Log
.findById(req.params.logid)
.populate('postedBy')
.exec((err, log) => {
let response = {};
if (err) response = { status: 500, message: err };
else if (!log) response = { status: 404, message: `Log with id ${req.params.logid} not found.` };
else response = { status: 200, message: log };
return res.status(response.status).json(response.message);
});
};
私は空白と簡潔にするため、中括弧の多くを削除しました。 req.body
から直接値を持つものを作成したり、直接req.params.logid
でクエリを作成したりしないでください。値を最初に検証する必要があります。バリデーションにはexpress-validatorなどのライブラリを使用できます。
我々は、次のリクエストボディと/ログにリクエストを掲載することによりことがわかります。
{
"logTitle": "test log 32",
"postedBy": "5a2d1ec83ef998431c726dfc"
}
我々はIDを持つユーザーが5a2d1ec83ef998431c726dfcがpostedByユーザーとして設定されているログを作成します。私は/ログ/ 5a2d240c66d7b473a0aa6ec8(新しいログ)を取得した場合、私は得る:
{
"_id": "5a2d240c66d7b473a0aa6ec8",
"logTitle": "test log 32",
"postedBy": {
"_id": "5a2d1ec83ef998431c726dfc",
"firstName": "test",
"__v": 0
},
"__v": 0
}
私たちは、人口のログが同様にユーザーを返すことがわかります。
ありがとうございました。私は今これを使用しようとしています。私が(返信で)尋ねる質問があれば大丈夫ですか? – Tichel
@ティッセルはい、確かです。 – MikaS
ありがとうございました!現時点では、ユーザーとログの作成は満足です。その後のテスト – Tichel