我正在使用基于mongoose模式的基于模式的NodeJs和MongoDB实现与服务器相关的API。所以我刚才的问题是here从Mongoose中检索jsonObject
'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);
}
// console.log('Web Server started, waiting for connections...'+task);
res.json(task);
});
};
当我运行它返回jsonArray这样的服务器,
[
{
"_id": "58ba4c9c03e10b16d140775f",
"name": "Noorul ahamed",
"__v": 0,
"status": [
"pending"
],
"Created_date": "2017-03-04T05:11:56.590Z"
},
....
...
...
]
这里我的疑问是,
在上面的代码中,任务给这种的回应。我如何获得该任务数组中的每个对象?我是否需要使用for循环来获取该数组中的所有对象?我是NodeJs和MongoDB的新手。我构建了良好的server.Now我坚持这一点。?帮助将不胜感激。
UPDATE
// var myOwnObject = new mongoose.Schema({ name: 'string', id: 'string',status:'string',createdDate:'String' });
// var myOwnObject = {};
var dataArray;
for (var i = 0; i < task.length; i++) {
var userObject = task[i];
myOwnObject.name=userObject.name;
myOwnObject.id=userObject._id;
myOwnObject.status=userObject.status[0];
myOwnObject.createdDate=userObject.Created_date;
dataArray[i]=myOwnObject;
}
res.json(JSON.Stringify(dataArray));
错误
events.js:161 抛儿; //未处理 '错误' 事件 ^
TypeError: Cannot set property 'name' of undefined at /home/noorulhasan/todoListApi/api/controllers/todoListController.js:17:29 at model.Query. (/home/noorulhasan/node_modules/mongoose/lib/model.js:3433:16) at /home/noorulhasan/node_modules/kareem/index.js:273:21 at /home/noorulhasan/node_modules/kareem/index.js:127:16 at _combinedTickCallback (internal/process/next_tick.js:67:7) at process._tickCallback (internal/process/next_tick.js:98:9) [nodemon] app crashed - waiting for file changes before starting...
更新错误 当我与myObject的= {}
events.js尝试:161 掷ER; //未处理的 '错误' 事件 ^
TypeError: Cannot set property '0' of undefined at /home/noorulhasan/todoListApi/api/controllers/todoListController.js:21:25 at model.Query. (/home/noorulhasan/node_modules/mongoose/lib/model.js:3433:16) at /home/noorulhasan/node_modules/kareem/index.js:273:21 at /home/noorulhasan/node_modules/kareem/index.js:127:16 at _combinedTickCallback (internal/process/next_tick.js:67:7) at process._tickCallback (internal/process/next_tick.js:98:9)
UPDATE
我收到此类型的输出。如何摆脱'\'符号。
"[{\"name\":\"Ahamed\",\"id\":\"58bac0fc2cf0894f071e41c0\",\"createdDate\":\"2017-03-04T13:28:28.759Z\"}]
我尝试以下方法。
var jsonData=JSON.stringify(dataArray);
var updateJson = jsonData.replace('"\"', "");
res.json(JSON.stringify(updateJson));
,但它增加了像下面额外的符号,
"\"[{\\\"name\\\":\\\"Ahamed\\\",\\\"id\\\":\\\"58bac0fc2cf0894f071e41c0\\\",\\\"status\\\":\\\"pending\\\",\\\"createdDate\\\":\\\"2017-03-04T13:28:28.759Z\\\"}]\""
您的'任务'只是一个正常的数组。你可以像使用普通数组一样访问它里面的元素。你可以用'task [n]'选择一个特定的元素,或者使用任何类型的循环或迭代函数。 –
@JyotmanSingh感谢您的帮助。我尝试了上述方法。我更新了我的问题。 – Noorul