默认情况下,当我们使用mongoose与Express

时间:2017-11-01 14:01:58

标签: node.js mongodb express mongoose

我是Node JS技术的新手。我有3个基本的怀疑。

  1. 在我的nodeJS应用程序中,我使用mongoose连接到mongodb。但我没有提到任何收藏品名称。但是当我按照预期从Form发送数据时,数据会被保存。我想知道默认情况下它将存储在哪个集合中。如何查看存储的数据。
  2. 如果我们想要在特定集合中保存数据,如何使用mongoose提及特定的集合名称。
  3. 3.一般如果我们想在我们的应用程序中使用任何中间件,我们将其连接起来   中间件使用app.use()对吗?但在mongoose的情况下,我们不添加   到app.use()。但我们仍然可以使用猫鼬功能。 谁能告诉你这是怎么可能的。

    提前多多感谢。

2 个答案:

答案 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的路由处理程序。