当我试图更改Mongoose查询返回的数据的任何部分时,它没有任何效果。
昨天我花了大约两个小时试图弄明白这一点,各种各样的\。clone()
s,使用临时存储变量等。最后,就在我觉得自己疯了的时候,我找到了一个解决方案。所以我想到了未来的某个人(Fyuuture!)可能存在保存问题。
Survey.findById(req.params.id, function(err, data){
var len = data.survey_questions.length;
var counter = 0;
_.each(data.survey_questions, function(sq){
Question.findById(sq.question, function(err, q){
sq.question = q; //has no effect
if(++counter == len) {
res.send(data);
}
});
});
});
我认为Mongoose文档没有足够清楚地说明这一点,但是查询中返回的数据(尽管您可以res.send()它)实际上是一个Mongoose文档对象,而不是JSON对象。但是你可以用一句话来解决这个问题。。。
Survey.findById(req.params.id, function(err, data){
var len = data.survey_questions.length;
var counter = 0;
var data = data.toJSON(); //turns it into JSON YAY!
_.each(data.survey_questions, function(sq){
Question.findById(sq.question, function(err, q){
sq.question = q;
if(++counter == len) {
res.send(data);
}
});
});
});
对于这样的情况,您想要一个普通的JS对象而不是一个完整的模型实例,您可以像这样在查询链上调用精简()
:
Survey.findById(req.params.id).lean().exec(function(err, data){
var len = data.survey_questions.length;
var counter = 0;
_.each(data.survey_questions, function(sq){
Question.findById(sq.question, function(err, q){
sq.question = q;
if(++counter == len) {
res.send(data);
}
});
});
});
通过这种方式,数据
已经是一个普通的JS对象,您可以根据需要进行操作。
问题内容: 当我尝试更改猫鼬查询返回的数据的任何部分时,它均无效。 昨天,我尝试使用各种s,使用临时存储变量等来解决大约2个小时的问题。最后,就在我发疯的时候,我找到了解决方案。因此,我认为将来有人(保存!)可能会出现保存问题。 问题答案: 对于需要普通JS对象而不是完整模型实例的情况,可以在查询链上调用,如下所示: 这种方式已经是一个普通的JS对象,您可以根据需要对其进行操作。
我一直在研究猫鼬文档,但我找不到一种方法来实现我想要做的事情。考虑一个MangGDB用户集合。还可以考虑一个包含DB集合中所有字段的蒙古人用户模式。 现在,我想登录到控制台,所有用户,但属性已更改。有点像: 用户。图例(): 给定的异步类型。find()函数我不确定这是否可以实现。我来自C#和PHP背景,只处理关系数据库,这可以通过在用户类中使用只返回所需值的函数轻松实现。 能做到吗?!
问题内容: 快速版本 基本上,我正在更新hibernate表,后续查询正在加载陈旧的值。 详细版本 hibernate(3.3.1.GA)和EhCache(2.4.2)。 包含页面的持久对象,我将页面添加到本书的中间。我正在使用Databinder / Wicket,尽管我认为这并不相关。 适用的字段/方法是: 最终结果是,有一个新页面添加到列表中,并且数据库也进行了相应更新,我已经在我的数据存储
此查询由Django ORM使用RAWSQL生成: 这是一个错误 1242-子查询返回超过1行 这是子查询的结果 我读了MYSQL文档,但我不明白为什么返回两行会有问题。我试过很多替代方法。 问题出在哪里?
问题内容: 今天,我写了一个查询,应该返回一个错误。而是返回带有列名和数据类型的值15 。你知道为什么吗? 结果: 问题答案: 您要指定一个常量: 货币常量表示为数字字符串,带有可选的小数点 和可选的货币符号作为前缀 因此moneyselect $15select ¥15`。 正如Jeroen在评论中指出的那样: 因为日元符号(楼)是货币指示器,并且在某些日语本机字符集中,其代码点与ASCII中的
有人真的很快就否决了我的问题,因为它缺乏足够的信息。然后我编辑了它,但反对票仍然是:(