Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当模型和模式存储在另一个文件中时,如何使用findOne()或find()等方法从Node js中的MongoDB检索文档?_Javascript_Node.js_Mongodb_Mongoose_Mongoose Schema - Fatal编程技术网

Javascript 当模型和模式存储在另一个文件中时,如何使用findOne()或find()等方法从Node js中的MongoDB检索文档?

Javascript 当模型和模式存储在另一个文件中时,如何使用findOne()或find()等方法从Node js中的MongoDB检索文档?,javascript,node.js,mongodb,mongoose,mongoose-schema,Javascript,Node.js,Mongodb,Mongoose,Mongoose Schema,我不熟悉node和MongoDB,也不熟悉编码。我正在从事一个项目,在那里我创建文档并将它们存储在MongoDB中。我用猫鼬做这些东西。早些时候,我在app.js文件中有我所有的模型和模式。我能够使用findOne或find方法在我的webapp中检索使用模式存储的数据 但最近,我将所有模式和模型都移动到另一个名为model.js的文件中。我还要求在app.js文件中包含我的所有模型 但是,当我尝试使用定义的模型和模式检索app.js中的所有数据时,我现在不能这样做吗 下面是两个文件app.js

我不熟悉node和MongoDB,也不熟悉编码。我正在从事一个项目,在那里我创建文档并将它们存储在MongoDB中。我用猫鼬做这些东西。早些时候,我在app.js文件中有我所有的模型和模式。我能够使用findOne或find方法在我的webapp中检索使用模式存储的数据

但最近,我将所有模式和模型都移动到另一个名为model.js的文件中。我还要求在app.js文件中包含我的所有模型

但是,当我尝试使用定义的模型和模式检索app.js中的所有数据时,我现在不能这样做吗

下面是两个文件app.js的代码:

还有更多来自app.js的代码

现在,当我尝试使用findOne或find之类的方法时,我无法检索任何内容。我如何解决这个问题

提前感谢

您正在替换module.exports,并将其分配给另一个模型

module.exports = Session;
module.exports = CompletedSession; // Wrong!!, every module.exports you have assigned will be overwritten with the model CompletedSession
此外,您正在将相同的内容导入不同的模型

var Customer = require("./models/model.js"); // since your exported module is actually CompletedSession, Customer here will be the model CompletedSession
var Purchase = require("./models/model.js"); // here, you require the same module as above, and assign it to another variable, this will also be CompletedSession
解决方案

导出时,应在模块上分离具有不同属性的模型

module.exports.Session = Session;
module.exports.CompletedSession = CompletedSession;
var Session = require("./models/model.js").Session;
var CompletedSession = require("./models/model.js").CompletedSession;
导入时,应指定模块的属性

module.exports.Session = Session;
module.exports.CompletedSession = CompletedSession;
var Session = require("./models/model.js").Session;
var CompletedSession = require("./models/model.js").CompletedSession;
或者

您可以使用ES2015速记属性名称组合导出语句,使用ES2015对象分解将导入语句组合为一个语句

module.exports = { Customer, Purchase, /* ... other models */}; // shorthand property names

关于基本节点模块导入/导出有一个很好的解释和示例您好,您能介绍您面临的错误/问题吗?控制台上记录了任何错误?我没有收到任何详细错误。但是,当我尝试consol.log任何查找或findOne时,我得到了null谢谢!成功了。由于我不熟悉编码和Javascript,如果您可以删除一些指向此解决方案的文档或参考资料的链接,这将非常有帮助。我可以更好地理解,阅读文档。对于初学者来说,正式文档可能包含太多信息,我在答案中包含了一篇文章的链接
module.exports = { Customer, Purchase, /* ... other models */}; // shorthand property names
var { Customer, Purchase, /* ... other models */ } = require("./models/model.js"); // object destructuring