使用mongoose和Node.js读取此集合时遇到问题:
我的Collection里面有一个JSON,我尝试用这段代码阅读:
materias.find().exec(function(err1,materias){
if(err1){console.log(err1); return next();}
for(x=0;x<materias.length;x++){
//console.log(materias[x].Nombre);
//var arreglo=materias[x].Horario[0].Dia; // TRY ONE
var arreglo=JSON.parse(materias[x].Horario[0]); // TRY TWO
console.log(arreglo[0]);
}
//RESPONSE TRY ONE
console.log(arreglo) UNDEFINED
//RESPONSE TRY TWO
undefined [
//if I use JSON.stringify the response is {[object][object]...
enter code here
答案 0 :(得分:0)
您无需使用mongoose手动解析JSON
。
你得到undefined
,因为你在循环中定义变量arreglo
但是尝试在它之外访问它。这应该有效:
materias.find().exec(function(err1,materias){
if(err1){console.log(err1); return next();}
for(x=0;x<materias.length;x++) {
var arreglo = materias[x].Horario[0]; // TRY TWO
console.log(arreglo);
}
答案 1 :(得分:0)
我认为错误是:您将数据库命名为materias,并且您对返回的集合使用相同的名称。尝试将返回名称集合更改为其他名称。
materias.find()。EXEC(功能(ERR1,的 change_name_here 强>){
//所需代码
}
答案 2 :(得分:0)
FINALYYYYYYYYYY我修改了它改变我的猫鼬模型 我有这个:
var materias=new Schema({
Nombre:{type:String, required:true},
Docente:{type:String, required:true},
Horario:{type:String, required:true}
});
module.exports = materias;
并为此进行更改:
Horario:[{Dia:String, Hora:String, Tiempo:String}]
阅读:
for(x=0;x<materias.length;x++){
var arreglo=materias[x].Horario; // TRY TWO
console.log(arreglo[0].Dia);
}