奇怪的Mongoose schema.js错误- `options`不能用作模式路径名

ttvkxqim  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(114)

在我的模式中,如果我在metrics : [ { options : {} } ]中有options,那么我得到:

/home/one/cloudimageshare-monitoring/project/node_modules/mongoose/lib/schema.js:282
    throw new Error("`" + path + "` may not be used as a schema pathname");
          ^
Error: `options` may not be used as a schema pathname

字符串
但是如果把options改成任何其他的单词.比如qoptions.那么错误就消失了。为什么会发生这种情况呢?

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

var FilesystemSchema = new mongoose.Schema({
    timeStamp : { type : Date, index: true },
    avaiable : Boolean,
    status : String,
    metrics : [
        { options : {
                data : String,
                type : String,
                unit : String
               }
        },
        { freeFiles : {
              data : Number,
              type : String,
              unit : String
             }
        },
        { total : {
              data : Number,
              type : String,
              unit : String
             }
        },
        { avail : {
              data : Number,
              type : String,
              unit : String
             }
        },
        { free : {
              data : Number,
              type : String,
              unit : String
             }
        },
        { files : {
              data : Number,
              type : String,
              unit : String
             }
        },
        { used : {
              data : Number,
              type : String,
              unit : String
             }
        }
 ]   
});

module.exports = FilesystemSchema;

eyh26e7m

eyh26e7m1#

Mongoose有许多不能使用的Reserved模式名称,以避免与Mongoose的内部实现冲突。文档中的列表给出了以下保留名称:

on, emit, _events, db, get, set, init, isNew, errors, schema, options, modelName, collection, _pres, _posts, toObject

字符串
这些术语应该在你的模式中避免!

bfrts1fy

bfrts1fy2#

我也遇到了同样的问题,因为我们不能使用像optionserrors..

new mongoose.Schema({ firstName: String }, { supressReservedKeysWarning: true })

字符串
然后,一切都如预期的那样。
下面是mongoose repo中关于Remove all reserved keywords from schema主题的问题

相关问题