"up"と "down"の2種類の旅行のサインインユーザーの出席を保存し、選択したルートに保存していますユーザーによって。私のような出席オブジェクトに何かしたい :初めて出席オブジェクトに対するのでJavaScriptでオブジェクトのプロパティを動的に作成または追加できません
attendance = {
up: {
'Wed Mar 15 2017' : [1,2,3.....],
'Wed Mar 16 2017' : [1, 2, 5 ,6 ....]
}
down : {
'Wed Mar 15 2017' : [1,2,3.....],
'Wed Mar 16 2017' : [1, 2, 5 ,6 ....]
}
}
は、私はそれを作成しています、データベースに存在しません。
app.get('/attendance', function (req, res) {
var routeId = req.user.place_id;
var userId = req.user._id;
var type = req.query.type;
route.findById(routeId, function (err, selected_route) {
if (err) throw err;
if (selected_route !== null) {
var date = formatDate();
// appending the user attendance to his/her selected route
if (selected_route.attendance !== undefined) {
if (selected_route.attendance[type] !== undefined) {
if (selected_route.attendance[type][date] !== undefined) {
selected_route.attendance[type][date].push(userId);
}
else {
// if(selected_route.attendance.type)
selected_route.attendance[type][date] = [];
selected_route.attendance[type][date].push(userId);
}
}
else {
selected_route.attendance[type] = {};
selected_route.attendance[type][date] = [];
selected_route.attendance[type][date].push(userId);
}
}
else {
selected_route.attendance = {};
selected_route.attendance[type] = {};
selected_route.attendance[type][date] = [];
selected_route.attendance[type][date].push(userId);
}
console.log(type);
// prints the data, but console.log(selected_route.attendance) still prints []
console.log(selected_route.attendance[type]);
// saving the update route info
selected_route.save(function (err) {
if (err) throw err;
res.send("Success");
});
}
else {
res.send("place error");
}
});
});
保存した後は、出席者オブジェクトのみがデータベースにフィールドなしで表示されます。 もし誰かが私が間違っていると私に教えていただけますか?それを行うための他のより効率的な方法があるかどうかを判断します。ありがとう。私が試し確認するには
EDIT
:
console.log(type);
console.log(selected_route.attendance[type]);
console.log(selected_route.attendance);
これが出力されますが、ここから
up
{ '2017-03-15': [ 58c1464cdeda8810203ce53c ] }
[{}]
を取得している、私はそれが成功しselected_route.attendanceを作成することを集めることができます[type]オブジェクトが、selected_route.attendanceを出力しません。 で同様のサンプルスニペットを試みましたとうまく動作します。 今私は完全に何のアイデアが本当に感謝される無知ですか?
私はそれを出力して私の投稿を編集したことがわかるようにコンソールで[]を印刷しました – warl0ck
ええ、私は出席者の権利を最初から追加していますが、なぜこのようにしているのですか – warl0ck
クエリーとしてクエリ{出席:{$存在:偽}} 'を持つ' db.collection.update() 'を行います。 –