2017-03-04 5 views
1

私はNodeJSとMongoDbを初めて使用しています。私はjsonObjectの問題に直面しています。mongoDBのNodeJS JSONFormatの問題

ステップ1:私はNodeJSとMongoDBを私のubuntu 16.04システムに正常にインストールしました。

手順2:プロジェクトフォルダにpackage.jsonファイルを使用してすべてのサーバーセットアップを作成しました。

手順3:私は以下のようにserver.jsファイルを作成しました。

server.jsファイル

express = require('express'), 
    routes = require('./api/routes/todoListRoutes'); 
    mongoose = require('mongoose'), 
    Task = require('./api/models/todoListModels'), 
    bodyParser = require('body-parser'); 
    app = express(), 
    port = process.env.PORT || 3000, 
    mongoose.Promise = global.Promise; 
    mongoose.connect('mongodb://localhost/Tododb'); 
    app.use(bodyParser.urlencoded({ extended: true })); 
    app.use(bodyParser.json()); 
    routes(app); 
    app.listen(port); 
    console.log('todo list RESTful API server started on: ' + port); 

その後、私はレコードを格納するためのモデルファイルを作成しました。

todoListModels.js

'use strict'; 
    var mongoose = require('mongoose'); 
    var Schema = mongoose.Schema; 


    var TaskSchema = new Schema({ 
     name: { 
     type: String, 
     Required: 'Kindly enter the name of the task' 
     }, 
     Created_date: { 
     type: Date, 
     default: Date.now 
     }, 
     status: { 
     type: [{ 
      type: String, 
      enum: ['pending', 'ongoing', 'completed'] 
     }], 
     default: ['pending'] 
     } 
    },{ versionKey: false }//Updated); 

    module.exports = mongoose.model('Tasks', TaskSchema); 

todoListRoutes.js

'use strict'; 
module.exports = function(app) { 
    var todoList = require('../controllers/todoListController'); 
    app.route('/tasks').get(todoList.list_all_tasks).post(todoList.create_a_task); 
    app.route('/tasks/:taskId').get(todoList.read_a_task).put(todoList.update_a_task).delete(todoList.delete_a_task); 
}; 

todoListController.js

'use strict'; 


mongoose = require('mongoose'), 
Task = mongoose.model('Tasks'); 

exports.list_all_tasks = function(req, res) { 
    Task.find({}, function(err, task) { 
    if (err) 
     res.send(err); 
    res.json(task); 
    }); 
}; 

exports.create_a_task = function(req, res) { 
    var new_task = new Task(req.body); 
    new_task.save(function(err, task) { 
    if (err) 
     res.send(err); 
    res.json(task); 
    }); 
}; 


exports.read_a_task = function(req, res) { 
    Task.findById(req.params.taskId, function(err, task) { 
    if (err) 
     res.send(err); 
    res.json(task); 
    }); 
}; 


exports.update_a_task = function(req, res) { 
    Task.findOneAndUpdate(req.params.taskId, req.body, {new: true}, function(err, task) { 
    if (err) 
     res.send(err); 
    res.json(task); 
    }); 
}; 


exports.delete_a_task = function(req, res) { 
    Task.remove({ 
    _id: req.params.taskId 
    }, function(err, task) { 
    if (err) 
     res.send(err); 
    res.json({ message: 'Task successfully deleted' }); 
    }); 
}; 

次にノードサーバーをnodemon server.jsで実行しました サーバーが正常に実行されました。 その後、POST MANアプリケーションを使用してデータベースからデータを取得しようとします。

だから、私は以下のように、

方法GETでした:localhostを:3000 /タスク

それが正常に実行し、それが結果を生成します。

以下のような、

[ 
    { 
    "_id": "58ba4c9c03e10b16d140775f", 
    "name": "Karthik", 
    "__v": 0, 
    "status": [ 
    "pending" 
    ], 
    "Created_date": "2017-03-04T05:11:56.590Z" 
}] 

私の問題は、ここで

1である)私はここ__vIDフィールドを作成していませんでした。それでなぜ来るの? 2)次に、Created_dateフィールドに適切な日付形式が必要です。 「dd-MM-yyyy hh:mm」のようなものです。どうやってするの?

お願いします。ありがとうございます。サポートされていないプラットフォームを[email protected]ため:

エラー以下

私は瞬間をインストールしようとUPDATEは、オプションの依存関係を飛ばしnotsup

を発生します。1:(現在:{ "OS" の "Linux"、 "アーチ": "x64の"})

答えて

1
1. "_id": "58ba4c9c03e10b16d140775f" 

{: "ダーウィン"、 "アーチ"、 "任意" "OS"}たかっこれは、mongoを挿入するすべてのドキュメントに対して、mongodbによって作成されたデフォルトの一意のIDで、デフォルトでインデックスキーとして設定される_idを作成します。

以上の基準について、あなたは

2."__v": 0 

versionKey advantage of _idは、最初のマングースによって作成された場合に、各文書に設定されたプロパティです読み取ることができます。このキー値には、ドキュメントの内部リビジョンが含まれます。 versionKeyオプションは、バージョン管理に使用するパスを表す文字列です。

open this for more details

3."Created_date": "2017-03-04T05:11:56.590Z" 

に保存日時をMongoDBのデフォルトのフォーマットです。MongoDBの日付を格納するためにISO形式を使用します。このようにして保存する場合は、日付を文字列形式で保存することも、ISO形式で保存することもできますが、文書をフェッチするときは、Momentなどのモジュールを使用していつでも必要な形式の日付を表示できます。

+0

jsonから__vを取り除く方法。私の正しい日付を設定する方法は? – Noorul

+0

これは、データを挿入するときに追加できます。 新しいスキーマ({..}、{skipVersioning:{dontVersionMe:true}}); thing.dontVersionMe.push( 'hey'); thing.save(); //バージョンがインクリメントされていない –

+0

またはデータの取得を使用しているときに取得したくない場合は、このModels.facilities.find(条件、{__v:0}、オプション、コールバック)を使用できます。 投影で__v:0を渡します。 –