2013年2月22日金曜日

Expressフレームワークで、MongoDBのデータ更新

Expressフレームワークで、MongoDBのデータ更新です。特定のデータ1つを取得するには、配列のdocs[0]を利用すれば良いらしい。とりあえず、データは更新できるようになりましたが、相変わらず、エラー処理がわからない。一歩一歩進めることにします。

app.js
app.get('/users/edit/:name?', user.edit);
app.post('/users/edit/:name?', user.edit);
/routes/user.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://userid:password@linus.mongohq.com:10036/dbname');
var UserSchema = edit mongoose.Schema({ 
  name: String
});
Users = mongoose.model('Users', UserSchema);

exports.edit = function(req, res, next){
  name = '';
  if (req.body.name) name = req.body.name;

  if ( name != "" ) {
    Users.find({name: req.params.name}, function(err, docs) {
      Users.update({ name: req.params.name }, { name: name }, function(err) {
          // if (err) return next(err);
      });
    });
    res.redirect('/');
  } else {
    Users.find({name: req.params.name}, function(err, docs) {
      res.render('useredit', {title: "会員編集", user: docs[0] });
    });
  }
};
/views/useredit.jade
h2 新規登録
form(action='/users/edit/#{user.name}', method='post')
  label(for='form_name') お名前
  input#form_name(name='name', value='#{name}', type='text')
  input#form_submit(name='submit', value='変更', type='submit')

実際に設定してみたサイトがこちら

0 件のコメント:

コメントを投稿