Cast错误:在尝试查找时,Cast to String失败了

时间:2017-03-30 13:25:03

标签: node.js express mongoose mongoose-schema

我在这里遇到了很奇怪的问题,我可以通过mongoose保存数据,但无法进行查询。 这是代码:

const mongoose = require('mongoose');
const Schema   = mongoose.Schema;

const CategorySchema = new Schema({
  store : {type: String, required: true, unique: true},
  categories : [{
    parent : String,
    name : String,
  }],
});

CategorySchema.index({store: 1, update_at: -1});

module.exports = mongoose.model('Category', CategorySchema);

当我尝试进行查询时,出现此错误:

  

(node:7412)UnhandledPromiseRejectionWarning:未处理的承诺   rejection(rejection id:1):ValidationError:CastError:Cast to   字符串失败,值为“{_id:58dd019b1a06731b0990b878,存储:   'Store-Name-Here',类别:[],__ v:0}“在路径”商店“

我为其他集合设计了非常相似的模式,它们工作得很好但不是这个。

这就是我查询的方式:

Category.findOne({store: 'Store-Name-Here'}).exec().then(result => console.log(result), err => console.log(err));

Category.find().exec(function(err, result) {
    if (err)
        return next(err);
    console.log(result);
})

1 个答案:

答案 0 :(得分:0)

我想我发现了这个问题。我尝试将静态方法添加到名为CategoryScheme.static.init()的类别方案中。删除该方法后,一切正常。我想也许已经有一个名为init()的方法由于某种原因,我创建了一个可能已经覆盖它的方法。这就是导致错误的原因。