我是Node JS技术的新手。我有3个基本的怀疑。
3.一般如果我们想在我们的应用程序中使用任何中间件,我们将其连接起来 中间件使用app.use()对吗?但在mongoose的情况下,我们不添加 到app.use()。但我们仍然可以使用猫鼬功能。 谁能告诉你这是怎么可能的。
提前多多感谢。
答案 0 :(得分:1)
描述了Mongoose如何与MongoDB交互here。
有这个例子:
var schema = new mongoose.Schema({ name: 'string', size: 'string' });
var Tank = mongoose.model('Tank', schema);
并提及
第一个参数是模型所用集合的单数名称。 Mongoose会自动查找模型名称的复数版本。因此,对于上面的示例,模型Tank用于数据库中的tank集合。
model()
采用第三个参数,您可以在其中重命名集合:
var Tank = mongoose.model('Tank', schema, 'collectionname');
在调用model()
时进行收集。
app.use()
用于Express中间件。 Mongoose并非如此,这就是为什么你在这种情况下不使用app.use()
。
答案 1 :(得分:0)
这应该可以分解为多个问题,你应该展示一些代码。那就是说,我会抓住它。
在为架构建模时定义集合名称。所以,让我们说你有:
const UserSchema = new Schema({
name: String
});
然后你会告诉mongoose对它进行建模:
mongoose.model('User', UserSchema);
您将拥有一个名为" users"在您mongoose.connect()
来电中连接的数据库中。
关于中间件,Express中间件是您希望在请求/响应周期中触发的功能。您仍然可以在该周期之外调用代码(例如,mongoose),并且通常在应用程序启动时您将连接到数据库,然后在中间件或路由处理程序中读取或保存到该数据库。例如,您可能有一条路线:
const User = mongoose.model('User');
app.get('/users', (req, res, next) => {
User.find({}, (err, users) => {
if (err) return next(err);
res.send(users);
});
});
在这种情况下,您已经有一个通过之前定义的用户模型调用mongoose的路由处理程序。