2017-03-04 46 views
1

我是NodeJS和MongoDb的新手。我在jsonObject上遇到了一个问题。NodeJS与mongoDB JSON格式问题

第1步:我已经在我的ubuntu 16.04系统中成功安装了NodeJS和MongoDB。

第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方法:本地主机:3000 /任务

它成功运行,并且它产生的结果。

像下面,

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

我的问题就在这里,

1)我没有创建__vID这里领域。那为什么要来? 2)然后我需要适当的日期格式创建日期字段。像“dd-MM-yyyy hh:mm”。怎么做?

帮助将不胜感激。谢谢。

UPDATE

当我尝试安装的时刻,发生以下错误

notsup跳绳可选的依赖:不支持的平台[email protected]。1:想{ “OS”: “达尔文”, “拱”: “任何”}(电流:{ “OS”: “linux的”, “拱”: “64”})

回答

1
1. "_id": "58ba4c9c03e10b16d140775f" 

这是由mongodb创建的默认唯一ID,用于插入mongo的每个文档都将创建一个默认设置为索引键的_id。

更多的参考,你可以阅读advantage of _id

2."__v": 0 

的versionKey是每个文档设置时,首先由猫鼬创建一个属性。该键值包含文档的内部修订版本。 versionKey选项是一个字符串,表示用于版本控制的路径。

open this for more details

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

那是MongoDB的保存日期的默认格式。MongoDB使用ISO格式存储的日期。如果您想以这种方式保存日期,则可以将日期保存为字符串格式,但也可以保存为ISO格式,但是当您获取文档时,可以使用诸如Moment等模块来显示您想要的任何格式的日期。

+0

如何摆脱__v从json.?如何设置我的适当日期? – Noorul

+0

您可以在插入数据时添加。 new Schema({..},{skipVersioning:{dontVersionMe:true}}); thing.dontVersionMe.push('hey'); thing.save(); //版本不会递增 –

+0

或者如果您想要在检索数据时不想获取它,可以使用此Models.facilities.find(criteria,{__v:0},options,callback); 在投影中传递__v:0。 –