猫鼬,试图通过一个值找到一个对象

时间:2018-08-08 09:04:34

标签: javascript mongodb mongoose

我要在这里完成的工作是通过一个值找到一个对象,然后将该对象添加到另一个对象属性中。

代码

q = {     _id:Schema.Types.ObjectId,     类别:QuestionCategory,     问题:字符串,     名称:字符串, };

var request = require('request').defaults({ encoding: null });
var url = "URLHERE";

request(url, function(error, response, data) {
  if (!error && response.statusCode == 200) {
    var image = new Canvas.Image();
    image.src = data;

    var texture = new THREE.Texture(image);
    texture.needsUpdate = true;

    var material = new THREE.MeshPhongMaterial({map: texture, overdraw: true});
  } else {
    response = 'error';
  }
});

错误:

QuestionCategory.findOne().sort({ category: "ExampleCategory" }).exec((err, doc) => {
    if(err)
    {
        return err
    }
    q.category = doc;
})

我也尝试了没有.sort的情况,并在findOne中编写了过滤器,但是也没有用

模式

throw new TypeError('Invalid sort value: {' + field + ': ' + value + ' }');
    ^

TypeError: Invalid sort value: {category: ExampleCategory }

2 个答案:

答案 0 :(得分:0)

如果尝试使用类别字段ExampleCategory查询文档,则需要进行查找查询而不是排序查询 而且,当您使用findOne时,也无需对数据进行排序,因为它只会得到一个QuestionCategory QuestionCategory.findOne({category:“ ExampleCategory”})。exec(err,doc)=> {})

答案 1 :(得分:0)

您不能像这样sort()那样使用sort({ category: "ExampleCategory" }),首先需要像 .sort({ category: -1 }).sort({ category: 1 }),在执行从数据库(例如sort())的顶部提取单个记录时,我们不能使用findOne()sort()主要用于分别对数据和密钥进行排序。顺便说一下,您可以通过以下查询获得所需的结果:

QuestionCategory.find({}).sort({ _id: -1 }).limit(1)