文件中的多个架构不起作用

Posted

技术标签:

【中文标题】文件中的多个架构不起作用【英文标题】: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)
;

【问题讨论】:

【参考方案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 本身没有。

【讨论】:

以上是关于文件中的多个架构不起作用的主要内容,如果未能解决你的问题,请参考以下文章

combineFileInputFormat 中的 isSplitable 不起作用

多个 OpenGL 纹理在某些情况下不起作用?

猫鼬中的保存功能不起作用

多个文件输入html不起作用

为啥 html 的输入标签中的多个属性不起作用?

组件中的多个 useEffect 不起作用