【问题标题】:Multiple schema in a file not working文件中的多个架构不起作用
【发布时间】:2018-11-30 17:28:12
【问题描述】:

我在单个 schema.js 文件中有两个架构

var mongoose = require('mongoose');  

var user = new mongoose.Schema({
  name: String,
  add: String,
  role: String
});

var Organizationn = new mongoose.Schema({
  name: String,
  add: String,
  name:String
});

module.exports = {
  user: user,
  Organizationn: Organizationn
};

访问它就像

var models = require("../models/schema");
models.user.findOne()

它说 findone 不是函数

而如果我在文件中使用单个用户,它就可以工作。

我已经浏览了这个链接并像上面那样导出了

cant get data from database after multiple schema declared (mongoose + express + mongodb

但不工作

有什么想法吗?

谢谢

在@anthony 的帮助下,我解决了问题

我需要做以下事情

module.exports = {
  user: mongoose.model('user', user),,
  Organizationn: mongoose.model('Organizationn', Organizationn)
};

【问题讨论】:

    标签: node.js mongodb express mongoose


    【解决方案1】:

    如果您导出的文件不止一个,则必须使用花括号 { schema1 } 导入

    var mongoose = require('mongoose');  
    
    var user = new mongoose.Schema({
      name: String,
      add: String,
      role: String
    });
    
    var organization = new mongoose.Schema({
      name: String,
      add: String,
      name:String
    });
    
    const userSchema = mongoose.model('users', user),
    const organizationSchema = mongoose.model('organizations', organization)
    
    module.exports = { User: userSchema, Organization: organizationSchema }
    

    然后导入

    var { User } = require("../models/schema");
    var { Organization } = require("../models/schema");
    User.findOne()
    Organization.findOne()
    

    【讨论】:

    • 我不会导出多个文件,只是像变量这样的架构
    • 好的,我找到了问题,但无论如何你的回答帮助我找出了问题
    • 您正在尝试查询架构!您必须创建一个模型。查询是在 Model 实例上进行的,而不是 Schema。
    【解决方案2】:

    尝试以这种抽象的方式看待它:

    mongoose.Schema 基本上只是一个对象。

    mongoose.model 是您使用架构对象自定义的类。

    换句话说,mongoose.model 拥有所有的数据库函数,而 schema 本身没有。

    【讨论】:

      猜你喜欢
      • 2017-05-25
      • 2015-11-18
      • 2020-07-12
      • 2020-02-23
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多