Node.js

mongooseでuniqueにしたフィールドを変更するときに注意すること

uniqueなフィールドの名前変更したり、そのフィールド削除したりすると、Mongo側にuniqueなindexが張られてたのは残るので、saveしようとすると、 E11000 duplicate key error index: mydb.myCollection.$field_1 dup key: { : null }みたいな感じでエラる。…

Ubuntuにnode.jsをインストール

必要なパッケージをインストール $ sudo apt-get install g++ curl libssl-dev apache2-utils pkg-configあとは普通にインストール $ cd /usr/local/src $ sudo wget http://nodejs.org/dist/node-v0.4.9.tar.gz $ sudo tar vzfx node-v0.4.9.tar.gz $ cd no…

npm adduserでエラる

モジュール作ったので試しにnpmにアップしようと思ってやってみた。 $ npm adduserでユーザー登録するんだけど、まずusernameにスペースとかあるとエラる。npmのページ見るとユーザー名みたいなとこはスペース入りの名前がでてるから、そこにでるやつかと思…

MongooseでEmbedded Documentsの削除

やり方わからんくてソースまで読んだけど結局公式のドキュメントに書いてあったというオチ。 http://mongoosejs.com/docs/embedded-documents.html

node.jsのgearmanモジュール

GitHub - gofullstack/gearman-node: Gearman libraries for Node.js GitHub - andris9/gearnode: Gearman worker and client for Node.jsってふたつ見つけて、gearman-nodeのほうがwatch多いからこっちのほうがいいかなーと思ったけど、gearman-nodeのほう…

node.jsの非同期API

nodejs_jpのMLで参考になるやりとりがあったのでメモ。Google グループ Node の世界では、非同期な API には次の約束に従うことになってます。 ・非同期 API は最後の引数でコールバック関数を受け取る。 ・コールバック関数の最初の引数でエラーを示す (エ…

vimでnode.jsのプロジェクトだけ2スペースタブにする

.vimrcに augroup vimrc-project autocmd! autocmd BufNewFile,BufReadPost * call s:vimrc_project(expand('<afile>:p:h')) augroup END function! s:vimrc_project(loc) let files = findfile('.vimrc.project', escape(a:loc, ' ') . ';', -1) for i in reverse(</afile>…

expressで複数send呼ぶとエラる

まあ当たり前だけど app.get('/hoge', function(req, res) { for (...) { ... res.send({...}); } }); とか間違えてやったら Error: Can't use mutable header APIs after sent.ってエラった。

expressでbasic認証

app.use(express.basicAuth('username', 'password')); もしくは app.use(express.basicAuth(function(user, password) { return user === 'username' && password === 'password'; })); こうかな。上のほうが簡単だけど下の方が柔軟。パスで分けたいなら ap…

node.jsでWebAppつくるときの設定ファイル

よくWebAppつくるときはconfigとconfig.local的なのを用意しといて、configは全部の環境共通で使う設定を書いておいて、config.localのほうは環境に依存する設定を書いとく。で、configの設定にconfig.localを上書きしてマージする。config.localのほうは.gi…

node.jsでrequireのパスにカレントディレクトリを追加

require.paths.unshift(__dirname); これ一番上に書いとく。