开发者社区 问答 正文

终端不使用Mongoose响应节点app.js

我正在学习使用Mongoose for MongoDB。我有app.js文件。当我最终在超级终端上运行node app.js时,光标只是向下移动,什么也没有发生。当我转到mongo shell并使用“ show dbs”时,该列表未添加我指定的数据库。

我已经为不推荐使用的元素添加了必需的部分。

我正在使用的版本-来自我的package.json:“ mongodb”:“ ^ 3.3.5”,“ mongoose”:“ ^ 5.7.14”

进行这项工作的可能方法是什么?

这是我的代码:

const mongoose = require('mongoose');

mongoose.connect("mongodb://localhost:27017/fruitsDB",

{ useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: true });


const fruitSchema = new mongoose.Schema({

  name: String,

  rating: Number,

  review: String

});

展开
收起
几许相思几点泪 2019-12-08 22:32:58 508 分享
分享
版权
举报
阿里云 AI 助理回答

根据你的描述,你已经采取了正确的步骤来设置Mongoose连接到MongoDB并定义了一个模式(Schema)。但是,从你的问题来看,似乎你还没有创建任何模型(Model)实例或者执行任何操作(如保存数据到数据库),这可能是为什么你在mongo shell中看不到新数据库的原因。

在Mongoose中,你需要基于定义的Schema创建一个Model,然后通过这个Model来进行数据库操作。请看下面的示例代码,展示如何基于你的fruitSchema创建一个名为Fruit的Model,并且向数据库插入一条记录:

const mongoose = require('mongoose');

// 连接 MongoDB
mongoose.connect("mongodb://localhost:27017/fruitsDB", {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useFindAndModify: false // 注意:useFindAndModify 已被弃用,应设为 false 或移除
});

// 定义 Schema
const fruitSchema = new mongoose.Schema({
  name: String,
  rating: Number,
  review: String
});

// 创建 Model
const Fruit = mongoose.model('Fruit', fruitSchema);

// 插入一条数据示例
const fruit = new Fruit({
  name: 'Apple',
  rating: 4.5,
  review: 'Great taste!'
});

// 保存到数据库
fruit.save((err) => {
  if (err) {
    console.error('Error saving fruit:', err);
  } else {
    console.log('Fruit saved successfully!');
  }
});

确保你的MongoDB服务正在运行,并且端口27017是可用的。当你运行这段代码后,如果一切正常,你应该能在mongo shell中看到fruitsDB数据库被创建,并且其中包含了一条你刚刚插入的记录。

使用show dbs命令可能不会立即显示新创建的数据库,因为MongoDB默认只显示包含数据的数据库。你可以尝试使用use fruitsDB切换到该数据库,然后使用db.fruits.find()来查看集合中的内容,这将确认你的数据是否已成功插入。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答