2016-06-23 62 views
1

mongoを$ setと$ pushでどのように更新できますか?私の急行app.jsで

[ { _id: 57682f69feaf405c51fdf144, 
    email: '[email protected]', 
    username: 'testuser' }, 
    { username: 'sevilayha', _id: 5768d36c4c243de7422f681e, __v: 0 } ] 

は、私は、以下のデータを持っている

// With Mongoose, everything is derived from a Schema. Let's get a reference to it and define our users. 
var userSchema = mongoose.Schema({ 
    name: String, 
    username: { type: String, required: true, unique: true }, 
    password: { type: String, required: true }, 
    admin: Boolean, 
    location: String, 
    meta: { 
     age: Number, 
     website: String 
    }, 
    created_at: Date, 
    updated_at: Date 
}); 

// The next step is compiling our schema into a Model. 
var User = mongoose.model('User', userSchema); 

app.get("/", function(req, res) { 

    var updateQuery = {}; 

    User.findOne({ username: /^sevilayha/ }, function (err, user) { 
    if (err) return console.error(err); 
    updateQuery["meta"] = { 
     date: Date.now() 
    } 
    user.update({ 
     $push: updateQuery, 
     $set: { size: 'large' }, 
     email: '[email protected]' 
    }); 
    res.status(200).json(user); 
    }); 
    User.find(function (err, users) { 
    if (err) return console.error(err); 
    console.log(users); 
    }); 

が、私はまだ同じデータを取得します。更新、設定、またはプッシュされたものはありません。私が逃したアイデアは何ですか?

私は「マングース」によ:「〜4.5.1」

+0

新しい値がdbに反映されるように、データを更新した後にuser.save()を追加する必要があります。 –

+0

nope。その必要はありません。 save()もテストされていますが、運はありません。 – laukok

+0

'.update'を使わず、代わりに' .save'を使ってみましたか? '' 'Model.findOne({name: 'borne'}、function(err、doc){ doc.name = 'jason ();doc.visits。$ inc(); doc.save(); }); '' 'mongooseドキュメントから取ったものですか? –

答えて

0

私は私のスキーマを更新しましたが、私は、コールバックを追加する必要がありますか、それは動作しません。

var userSchema = mongoose.Schema({ 
    name: String, 
    username: { type: String, required: true, unique: true }, 
    password: { type: String, required: false }, 
    email: String, 
    admin: Boolean, 
    location: String, 
    meta: { 
     age: Number, 
     website: String 
    }, 
    data: Array, 
    created_at: Date, 
    updated_at: Date 
}); 

var updateQuery = {}; 
    User.findOne({ username: /^sevilayha/ }, function (err, user) { 
    if (err) return console.error(err); 
    updateQuery["data"] = { 
     date: Date.now() 
    } 
    user.update({ 
     $push: updateQuery, 
     $set: { location: 'large' }, 
     name: 'John', 
     email: '[email protected]' 
    }, function(err, res) { 
     if (err) return console.error(err); 
     res.status(200).json(res); 
    }); 
    }); 

どのように奇妙な!

関連する問題