私のロジックを修正しようとして失敗した多くの試みの後、私は助けを求めることに頼っています。MongooseがmLabにデータを保存していない
私はNode、Express、Passport、Mongoose、MongoDBを使ってアプリケーションを作成しています。
var userSchema = mongoose.Schema({
local : {
username : String,
password : String,
},
jobs : [{ type: mongoose.Schema.Types.Mixed }]
});
ユーザーはこれによって行われます保存:
このMongoDBのになりvar newUser = new User();
// set the user's local credentials
newUser.local.username = username;
newUser.local.password = newUser.generateHash(password);
newUser.jobs = [];
// save the user
newUser.save(function(err) {
if (err) {
console.log(err);
throw err;
}
console.log('user saved: ', newUser);
return done(null, newUser);
});
。彼らは、このスキーマで定義されているときにユーザーがサインアップし、これまでにユーザーがサインアップしてログインすることができますdoc:
{
"_id": {
"$oid": "596a436a2981ab1729a4f08b"
},
"local": {
"password": "$2a$08$TV2rADNbm302cREGRzfRFOtZF4mA8kYCeBjcmalPCk./flUO3wM.6",
"username": "kev"
},
"__v": 0
}
不足しているジョブのエントリに注目してください。私が使用してジョブを追加することによって、ドキュメントを更新しようとしたとき、私は今、けれども、それが問題になるとは思いませんでした:
User.findOne(
{ 'local.username': req.user.username },
// { $push: { 'jobs':{'website': req.body.joblink } } },
// { returnNewDocument: true },
function(err, user) {
// if there are any errors, return the error
if (err) {
console.log(err);
return done(err);
} else {
user.jobs = [];
user.jobs.push({'website': req.body.joblink});
console.log(user.jobs);
user.save(function(err) {
if (err) {
console.log(err);
throw err;
}
console.log('user updated: ', user);
res.redirect('/profile');
});
}
});
Mongoのドキュメントが
にconsole.logながら変更されていません(」ユーザー更新: '、ユーザー);
は、正しい文書を表示します。
あなたのスキーマを更新する必要が
を更新するために、$のプッシュを使用できますか?このコードは、変更されたドキュメントを読み取ろうとしません。データを "手動で"見ている場合は、次のことを確認してください。1.実際にあなたが修正していると思っている文書を見ています(多くの文書のうちの1つだけを選択している.findOne()可能な文書)。 2.あなたが実際に正しいコレクションを見ていることは、マングースモデルはデフォルトで "複数の"コレクション名を使用します。この場合、 "users"はモデル名として ''ユーザー ''になります。 –
私は自分のデータベースストレージに使用しているmLabの文書を見ています。私は間違いなく、ユーザーコレクション内に重複するユーザーが存在しないように、私が変更している同じドキュメントを見ています。コレクションを正しく作成した場合は、ユーザと呼ばれるドキュメントを格納するコレクションというコレクションを作成しました。ここで、スキーマモデルは上に表示されます。 – klewis