【问题标题】:Mongoose .save failsMongoose .save 失败
【发布时间】:2018-03-31 02:29:46
【问题描述】:

我从一到两周开始学习 node.js & mongoDB & mongoose。我现在遇到的问题是,我正在尝试通过 mongoose .save() 保存到 db,但它没有按预期工作。我正在看一个教程,它已经 3 天了,所以应该是最新的,但是我收到了奇怪的错误。

mpromise(mongoose 的默认承诺库)已弃用”测试时出现错误 [重复]

我在stackoverflow上读到了,我可以添加:

猫鼬.Promise = require('bluebird');

它会工作,但代码甚至不会转到 .save 函数,也不会引发错误。我不确定问题出在哪里。

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
let connectionString = 'mongodb://localhost:27017/mongo2';

mongoose.createConnection(connectionString, (err) => {
    if (err) {
        console.log(err);
        return;
    }

    let Student = mongoose.model('Student', {
        firstName: {type: String, required: true},
        lastName: {type: String, required: true},
        age: {type: Number},
        facultyNumber: {type: String, unique: true}
    });

    let me = new Student({
        firstName: 'Who',
        lastName: 'amI',
        age: 20,
        facultyNumber: '9374823104'
    });

    me.save().then((info) => {
        console.log(info);
    }).catch((error) => {
        console.log(error);
    });
});

编辑: 结果是:创建了数据库,也创建了集合,但没有创建对象。一切都是空的。

【问题讨论】:

  • 您实际上没有连接。 createConnection 实际上并没有建立连接。相反,您应该真正使用mongoose.connect(connectionstring,{ useMongoClient: true }),then( () => { /* code that does stuff */ }) 或更好的是使用async/awaitawait mongoose.connect(connectionstring, { useMongoClient: true });。同样在现代世界中mongoose.Promise = global.Promise 通常会这样做,除非您特别“想要”蓝鸟。你需要插入 Promise,所以你真的应该学习如何使用它们。
  • 如果我创建收藏,我怎么没有连接? @NeilLunn
  • 因为createConnection 只是“创造”。它不打开。你从哪里读到你的指示?所有官方消息都会告诉你正确的做法。
  • 本地学院视频剪辑。 "mongoose.connect(connectionString, { useMongoClient: true }).then(() => {" 解决了。我想我付给他们太多了......
  • 呃!抱歉,但不是第一次有人指出付费订阅培训非常低劣。始终阅读官方文档。 connections 有很多细节。您可能还会在此处的 mongoose 标签中找到一些通常浏览答案的内容。另请注意,该架构定义中的任何一个都不应真正位于连接“内部”,并且在连接之前定义完全可以(以及您应该)。只有实际交互(.save().find() 等)才真正需要建立连接。

标签: javascript node.js mongodb mongoose


【解决方案1】:

问题很可能是您的模型没有附加架构。

const { Schema } = require('mongoose');
const StudentSchema = new Schema({
        firstName: {type: String, required: true},
        lastName: {type: String, required: true},
        age: {type: Number},
        facultyNumber: {type: String, unique: true}
    }};

let Student = mongoose.model('Student', StudentSchema);

【讨论】:

    猜你喜欢
    • 2013-06-10
    • 2017-05-13
    • 2021-06-30
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 2021-09-06
    相关资源
    最近更新 更多