【问题标题】:Mongoose Database Connection and SchemaMongoose 数据库连接和架构
【发布时间】:2011-09-13 08:32:58
【问题描述】:

您好:我很难在线查找如何使用 mongoose 和 node.js 执行简单的数据库连接、模式创建和基本 CRUD。现在我有以下代码,但收到错误:

"TypeError: 对象不是函数

在 Schema.CALL_NON_FUNCTION_AS_CONSTRUCTOR (native).."

// Launch express and server
var express = require('express');
var app = express.createServer();


//connect to DB
var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost/napkin_0.1');


// Define Model
var Schema = mongoose.Schema,
    ObjectId = Schema.ObjectId;

User = new Schema({
  'title': { type: String, index: true },
  'data': String,
  'tags': [String],
  'user_id': ObjectId
});

//Define Collection
mongoose.model('Document', User);


var user = new User();
user.title = "TEST TITLE";
user.save();


//Launch Server
app.listen(3002);

【问题讨论】:

  • 我没有看到你在哪里定义了“用户”
  • 这不是定义吗:User = new Schema({ 'title': { type: String, index: true }, 'data': String, 'tags': [String], ' user_id': ObjectId });
  • 对 nodejs 应用程序进行故障排除的小技巧:阅读整个堆栈跟踪并查找错误的确切位置。通常它只是盯着你的脸。
  • 哦,抱歉,不知道我是怎么错过的。现在有一个好看的答案:)

标签: javascript mongodb node.js mongoose


【解决方案1】:

您正在尝试实例化 Schema 的一个实例。我会改变

User = new Schema({

UserSchema = new Schema({

以后随叫随到

var User = mongoose.model('user', UserSchema);

最后

var user = new User();

【讨论】:

    【解决方案2】:

    在您的架构定义之后。

    //Define Collection
    mongoose.model('Document', User);
    

    上面的代码不是用来定义集合的,是用来初始化模型对象的。

    如下修改:

    //Create Model Object
    var UserModel = mongoose.model('user_model_name', User); // 2nd param -> User is a schema object
    

    然后从模型对象中创建 Document 对象。 如下:

    var user_doc = new UserModel();
    

    然后你可以使用getter/setter和方法。

    user_doc.title = 'your text for title';
    user_doc.save();
    

    【讨论】:

      猜你喜欢
      • 2011-11-24
      • 2019-11-29
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 2014-07-18
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多