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 使用Express在多个路由中使用Mongoose模式_Javascript_Node.js_Express_Mongoose - Fatal编程技术网

Javascript 使用Express在多个路由中使用Mongoose模式

Javascript 使用Express在多个路由中使用Mongoose模式,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,我用的是猫鼬快车。我对nodejs很陌生 在我的routes/index.js中,我有一个userDataSchema: var Schema = mongoose.Schema; var userDataSchema = new Schema({ username: String, username_lower: String, email: String, password: String }, {collection: 'user'}); var UserData = m

我用的是猫鼬快车。我对nodejs很陌生

在我的routes/index.js中,我有一个userDataSchema:

var Schema = mongoose.Schema;
var userDataSchema = new Schema({
  username: String,
  username_lower: String,
  email: String,
  password: String
}, {collection: 'user'});

var UserData = mongoose.model('UserData', userDataSchema);
它在index.js文件中工作得非常好。 我希望在connexion.js文件中使用相同的模式而不会出错

我在index.js中尝试过

module.exports = mongoose.model('UserData', userDataSchema);
var UserData = require('./index.js');
connexion.js中

module.exports = mongoose.model('UserData', userDataSchema);
var UserData = require('./index.js');
然后我在connexion.js中使用我的用户数据。 这不会显示任何错误,但无论页面是什么,我的页面都将永远加载

所以我的问题是如何在routes文件夹的多个文件中使用相同的模式?

我可以通过在connexion.js
中创建另一个名为“UserDatas”的新模式,而不是在index.js中创建“UserData”(在这种情况下,我不使用exports,也不需要。/index.js)

但我不确定这样做是否正确


非常感谢:)

您需要使用新的mongoose。模式不是新模式, 因此请尝试此代码

const userDataSchema = new mongoose.Schema({
username: String,
username_lower: String,
email: String,
password: String
}, {collection: 'user'});

const UserData = mongoose.model('UserData', userDataSchema);
module.exports = UserData;

我希望这有助于

定义用户模型的文件应类似于以下内容:

var mongoose = require("mongoose");
var userSchema = mongoose.Schema({
    username: String,
    password: String
});
module.exports = mongoose.model("User", userSchema);
它位于名为“模型”的文件夹中。 假设index.js与models文件夹位于同一目录中,则可以在index.js中使用它

var User = require("./models/user");
希望这有帮助


将模型定义放入routes目录中的文件可能不是最好的方法。理想情况下,您将拥有一个单独的文件夹,用于存放路由和模型,以构建您的文件。

Hello Baha:)感谢您的回答和加入stackoverflow。我更新了我的帖子,我已经有了mongoose.schema。谢谢你的回复Julien你能提供你用来从mongo检索东西的代码吗…这不是最好的方法。。。你可以查看这个回购协议,看看模型控制器是如何制作的!希望它能帮到你谢谢你也可以结束这个问题然后我希望这个项目能帮助你学习nodejs star it如果你想有一个愉快的一天巴哈在他的项目中做了什么,所以我做了,它成功了,非常感谢!)现在模型是在路由之外定义的,在模型文件夹中的一个外部文件中,这是正确的方法吗(我没有得到“这不是最好的想法”部分?)。我刚从其他语言的编程中了解到,将代码分离并将属于同一文件夹的文件排序对于更好地理解代码非常有用。哦,好吧,那么你的意思是使用单独的模型绝对是一件好事,对吗?因为对我来说,它解决了我的问题+使我的代码更干净!这就是我想说的,是的!