mongodbをローカルやクラウド上にディプロイする際に時たまエラーが起こり、ログにでてくるのが以下のものなのですが、MongoDBが下記のようなエラーを吐き出しやすい理由などあるのでしょうか?
ERR TypeError: Cannot read property 'collection' of null
原因不明で、再インストールなどをすると戻ったりするのですが、これでは、こわくて、データをいれたりすることができないという状況です。
製品自体に弱点があるのか、ソースコードによっては、こういったエラーを吐き出しやすくなるなど、詳しい方がございましたら教えていただけませんでしょうか?
ちなみにソースコードは、以下です。
var express = require('express');
var bodyParser = require('body-parser');
var mongodb = require('mongodb');
var app = express();
var users;
app.use(express.static('public'));
app.use(bodyParser.json());
var cfenv = require('cfenv');
var appEnv = cfenv.getAppEnv();
app.listen(appEnv.port);
mongodb.MongoClient.connect("mongodb://URL", function(err, database) {
users = database.collection("users");
});
// 一覧取得
//users.find() でコレクション全体を取得し、toArray で配列にして出力。
//$resource の query() に対応
app.get("/api/users", function(req, res) {
users.find().toArray(function(err, items) {
res.send(items);
});
});
// 個人取得
//指定したObjectIdのドキュメントを users.findOne() で取得し出力。
//ObjectIdは文字列型では無いので変換
app.get("/api/users/:_id", function(req, res) {
users.findOne({_id: mongodb.ObjectID(req.params._id)}, function(err, item) {
res.send(item);
});
});
// 追加・更新
// 新規データ列と更新ロジックを実装
app.post("/api/users", function(req, res) {
var user = req.body;
if (user._id) user._id = mongodb.ObjectID(user._id);
users.save(user, function() {
res.send("insert or update");
});
});
// 削除
app.delete("/api/users/:_id", function(req, res) {
users.remove({_id: mongodb.ObjectID(req.params._id)}, function() {
res.send("delete");
});
});
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/14 14:47