我是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)我没有创建__v和ID这里领域。那为什么要来? 2)然后我需要适当的日期格式创建日期字段。像“dd-MM-yyyy hh:mm”。怎么做?
帮助将不胜感激。谢谢。
UPDATE
当我尝试安装的时刻,发生以下错误
notsup跳绳可选的依赖:不支持的平台[email protected]。1:想{ “OS”: “达尔文”, “拱”: “任何”}(电流:{ “OS”: “linux的”, “拱”: “64”})
如何摆脱__v从json.?如何设置我的适当日期? – Noorul
您可以在插入数据时添加。 new Schema({..},{skipVersioning:{dontVersionMe:true}}); thing.dontVersionMe.push('hey'); thing.save(); //版本不会递增 –
或者如果您想要在检索数据时不想获取它,可以使用此Models.facilities.find(criteria,{__v:0},options,callback); 在投影中传递__v:0。 –