数据结构为mongodb数据库,posts集合下的comments为一个数组对象,把comment是最为评论区,想在存入新评论时,先检测评论区的个数,也就是comments的length属性。 代码如下:
function commentFloor (id, back) {
//打开数据库
mongodb.open(function (err, db) {
if (err) {
return back(err);
}
//读取posts集合
db.collection('posts', function (err, collection) {
if (err) {
mongodb.close();
return back(err);
}
//根据条件查找对应的对象
collection.find({"_id":ObjectId(id)}).toArray(function (err, docs) {
console.log(ObjectId(id));
mongodb.close();
if (err) {
return back(err); //失败返回err
}
console.log(typeof(docs));
console.log(docs);
back(null, docs);
});
});
}); } Comment.prototype.add = function(id, callback) {
//存储时间
var date = new Date();
var time = {
minute: date.getFullYear() + "-"+ (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" +
date.getMinutes()
+ ":" + date.getSeconds()
}
//!!!!!!!!!先定义个一个floor变量,以便后面的函数对其返回值
var commentArray = [];
console.log(commentArray)
//调用前面定义的查找comments数组的函数。
var commentArray = commentFloor(id, function(err, docs) {
if (err) {
commentArray = []
}
console.log(docs);
return docs;
} );
// commentArray = docs[0].comments;
console.log(commentArray);
**此处的commentArray输出为undefined。不知为何**
var floor = commentArray.comments.length;
console.log(floor);
//要存入数据库的文档
var comment = {
name: this.name,
head: this.head,
time: time,
comment: this.comment,
floor: floor
};
//打开数据库
mongodb.open(function (err, db) {
if (err) {
return callback(err);
}
//读取posts集合
db.collection('posts', function(err, collection) {
if (err) {
mongodb.close();
return callback(err);
}
//根据_id为查询条件更改文章
collection.update({"_id":ObjectId(id)}, {
//comments为数组形式,可以直接用push来添加项
$push: {'comments': comment}
} , function (err) {
mongodb.close() ;
if (err) {
return callback(err);
}
callback(null); // err返回null
});
});
}); };
这个问题已经忙活了一天了,各种查资料,没方法,只有向大家求助了,谢谢!!!
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…