【问题标题】:Getting Object.keys called on non-object when creating mongoose schema创建猫鼬模式时在非对象上调用 Object.keys
【发布时间】:2016-08-02 16:29:41
【问题描述】:

我做了一些研究并尝试了一些事情,比如删除集合等。没有任何帮助。

代码:

MongoClient.saveData = function(schemaDefinition, data, collectionName){
    console.log("Schema definition: "+schemaDefinition+" collection name: "+collectionName);
    var RecordSchema = new mongoose.Schema(schemaDefinition);//{ Email: String, FirstName: String});//({any: Schema.Types.Mixed });
    console.log("Schema created.");
    var RecordModel = mongoose.model(collectionName, RecordSchema);
    console.log("Model created. Inserting in batches.")
    RecordModel.insertMany(data)
    .then(function(mongooseDocuments) {
         console.log("Insertion was successful.");
    })
    .catch(function(err) {
        console.log("Error while inserting to DB.")
    });

错误:

/home/ubuntu/ds_queuesystem/node_modules/mongoose/lib/schema.js:381
  var keys = Object.keys(obj);
                    ^
TypeError: Object.keys called on non-object
    at Function.keys (native)
    at Schema.add (/home/ubuntu/ds_queuesystem/node_modules/mongoose/lib/schema.js:381:21)
    at new Schema (/home/ubuntu/ds_queuesystem/node_modules/mongoose/lib/schema.js:98:10)
    at Function.MongoClient.saveData (/home/ubuntu/ds_queuesystem/MongoClient.js:34:21)
    at /home/ubuntu/ds_queuesystem/DS_QueueSystem.js:84:18
    at nextTask (/home/ubuntu/ds_queuesystem/node_modules/async/dist/async.js:6627:18)
    at /home/ubuntu/ds_queuesystem/node_modules/async/dist/async.js:6621:17
    at /home/ubuntu/ds_queuesystem/node_modules/async/dist/async.js:339:31
    at /home/ubuntu/ds_queuesystem/node_modules/async/dist/async.js:840:20
    at /home/ubuntu/ds_queuesystem/DS_QueueSystem.js:143:3
    at null.<anonymous> (/home/ubuntu/ds_queuesystem/node_modules/csv-parse/lib/index.js:71:16)
    at EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
    at process._tickCallback (node.js:415:13)

架构定义:

var schemaDefinition = "{SCHID: String, Priority: Number, Status: String, Json: Schema.Types.Mixed})";

【问题讨论】:

  • 您能解释一下您的要求吗?你的问题到底是什么?
  • 我只想在没有错误的情况下执行上面的代码。上面的代码负责创建模式,并将记录批量添加到集合中。就是这样。

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

schemaDefinition 应该是 Object,而不是文字。

尝试:

var schemaDefinition = {
  SCHID: String,
  Priority: Number,
  Status: String,
  Json: Schema.Types.Mixed
};

文档:http://mongoosejs.com/docs/guide.html

【讨论】:

  • 谢谢。有点奇怪的错误信息,不是吗?
猜你喜欢
  • 2017-04-04
  • 2021-11-04
  • 1970-01-01
  • 2012-04-22
  • 2018-11-30
  • 2019-02-20
  • 2014-10-26
  • 1970-01-01
  • 2014-04-10
相关资源
最近更新 更多