mongodb,node express,从mongodb返回的输出中提取一个元素

时间:2012-04-16 13:26:45

标签: javascript node.js express

对于第一个代码块,console.log(“ff:”+ ff)打印完全如下:

  

ff:{_ id:sd845y3hishofiuwhei,全名:'sachin'}

console.log("ff JSON : "+JSON.stringify(ff)); // this line prints like below : 
  

ff JSON:[{“_ id”:“sd845y3hishofiuwhei”,“fullname”:“sachin”}]

我怎样才能在单独的变量中单独获得“sachin”?

var fullname=SampleModel.find({uname:req.session.uname},{fullname : true},function(err,ff){
    if(!err){
        console.log("ff : "+ff);
        console.log("ff JSON  : "+JSON.stringify(ff));
        return ff;
    }else { 
        return null;
    }
});

下面的代码块给出了“无效对象ID”之类的错误。可能是什么问题?

var ret= AnotherModel.find({_id : { $nin : ["1","2"] } }, function(err,details){
    if(!err) {
        res.send(details);
    }
    else {
        console.log("Error : "+err);
        res.send(err);
    }
});

我正在实施像这样的textarea

<textarea id="myarea" cols="100" rows="20"   ></textarea>
当我改变行时,

输出框正在改变它的高度,但是当我改变“cols”时,它的宽度不会改变。输出框也有小宽度,我同时检查chrome和mozilla。什么是解决方案? 感谢

1 个答案:

答案 0 :(得分:1)

据我所知,你使用的是mongoose而不仅仅是mongodb驱动程序。

在第一个代码块中,ff值不是字符串而是对象数组。

你可以访问“sachin”变量,例如:var fullname = ff[0].fullname; 当然,最好迭代一下阵列,但你明白了。

如果您只想要检索一个对象,则应该使用“findOne”函数,然后您可以像这样访问“sachin”:var fullname = ff.fullname;

对于第二个问题,您应该使用Query系统。查询是延迟的请求,您可以更精细地链接和调整。要延迟查询,只需省略回调函数:var query = Model.find({});

然后,根据您的情况添加所需的过滤器:query.where('_id').nin(['1', '2']);

最后,执行它:

query.exec(function (err, docs) {
    // called when the `query.complete` or `query.error` are called
    // internally
});

有关finding docsqueries的信息。