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

eufgjt7s  于 2023-04-06  发布在  Go
关注(0)|答案(2)|浏览(130)

我在一个schema.js文件中有两个模式

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
});

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

访问它就像

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

上面写着findone is not a function
而如果我在一个文件中使用一个类,它就可以工作了。
我已经通过这个链接,并没有像上面的出口
cant get data from database after multiple schema declared (mongoose + express + mongodb
但不起作用
知道吗?
谢谢
在@anthony的帮助下,我解决了这个问题
我需要做下面的

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

dpiehjr41#

如果导出多个文件,则必须使用花括号{ 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()
6ss1mwsb

6ss1mwsb2#

试着用这种抽象的方式来看待它:
一只 Mongoose 。Schema基本上就是一个对象。
模型是一个类,您可以使用模式对象自定义它。
换句话说,mongoose.model拥有所有的数据库函数,而模式本身没有。

相关问题