私は、企業がフィードバックを求める従業員に質問を送信するシンプルなWebアプリケーションを構築しています。まだmongodbについて学んでいます。一週間中それを周りに遊んでいる&私はゆっくりとフォーラムの助けを借りてそれをうまくやっていますが、今私はスキーマを設計するための欠陥のある思考プロセスを使用していたことを認識しています。私は当初、ユーザーのレスポンスをフィールドとしてUserSchema
に使用していましたが、これはユーザーのプロパティではなく、変化する(yes/no/null)変数であることを認識したので、 。私は今では別にAnswersSchema
を作成しなければなりません(私は1つが必要だと言われましたが、私はそれを頑固に主張しました - 私がプロジェクトを始めた時点では意味がありませんでした)でる)。私の質問は、router
post
のsave
操作で、3つのエンティティをすべてリンクするAPIでクエリを変更する方法です。 save
ここに表示されている操作コードは機能しますが、ユーザーがそのプロパティの1つとして応答したときのように欠陥があります。だから、私はUserSchema
の応答を削除した後に、フロントエンドの角にユーザーの名前だけが表示されるようになりました。Express:mongodb mongooseリンクエンティティ
var QuestionSchema = Schema({
id : ObjectId,
title : String,
employees : [{ type: ObjectId, ref: 'User'}]
});
var UserSchema = Schema({
username : String,
//response : String,
questions : [{ type: ObjectId, ref: 'Question'}]
});
//new schema/collection I've had to create
var AnswerSchema = Schema({
response : {type :String, default:null},
question : { type: ObjectId, ref: 'Question'},
employees : [{ type: ObjectId, ref: 'User'}],
})
module.exports = mongoose.model('Question', QuestionSchema);
module.exports = mongoose.model('User', UserSchema);
module.exports = mongoose.model('Answer', AnswersSchema);
api.js
Question.findOne({ title: 'Should we buy a coffee machine?'}).exec(function(err, question) {
//example data
var user = new User([{
"username": "lindelof",
"response": "yes",
},{
"username": "bailly",
"response": "no",
},{
"username": "suzan",
"response": "yes",
}]);
question.employees = [user1._id];
user.questions = [question._id];
question.save(function(err) {
if (err) throw err;
console.log(question);
user1.save(function(err) {
if (err) throw err;
});
});
});
console.log('entry saved >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
}
を(作成のみ
create
機能を使用するため)このルート更新既存の答えは、他にそれを作成します。 'Answer.findOneAndUpdate({ 質問:req.body.question、 従業員:req.body.user'角度のHTTPがAPI側からの応答を返さないので何かが起こっていません。 (req.body); '' Answer.findOneAndUpdate'の直上で、角度から送られた質問、名前、応答のある実際の身体を私に示しています –後に何が起こるかわからない従業員とレスポンスはエンティティもデータベースに保存されます回答文の中のヌル –
あなたはどこから回答を送りますか?データベースエントリは3つのフィールドすべてを表示しますか? –