【问题标题】:Collection not saved mongodb nodejs集合未保存 mongodb nodejs
【发布时间】:2018-07-31 08:43:06
【问题描述】:

我的应用程序(mongodb/nodejs)有问题,我的目标是保存一个集合:

const Job = require("../models/Job");
exports.saveJob = (req, res, next) => {
    const newJob = new Job(req.body);
    newJob.gender = 'Male';
    newJob.save((err, myjob) => {
        myjob.code = '1234';
        myjob.save((err, mysavedjob) => {

            console.log(mysavedjob);
            /** OUTPUT **
            * { __v: 0,
                updatedAt: 2018-07-31T08:31:47.664Z,
                createdAt: 2018-07-31T08:31:47.664Z,
                gender:'Male',
                code:'1234',
                ...
             }
            */

        })
    })
}

如您所见,代码输出了保存的文档,但是当我检查数据库时,我没有代码:'1234' 我只有

{ __v: 0,
 updatedAt: 2018-07-31T08:31:47.664Z,
 createdAt: 2018-07-31T08:31:47.664Z,
 gender:'Male',
  ...
}

==== 更新(添加 JobModel)====

const mongoose = require("mongoose");
const JobSchema = new mongoose.Schema(
  {
    userId: { type: mongoose.Schema.Types.ObjectId, ref: "User" },
    code: String,
    gender: String,
  },
  { timestamps: true }
);

module.exports = mongoose.model("Job", JobSchema, "jobs");

有人可以告诉我为什么吗? 谢谢。

【问题讨论】:

  • 工作模型可以共享吗?
  • 嘿,谢谢,我刚刚更新了帖子。
  • 您的代码按预期工作。我已经创建了您的代码的独立版本,也许这会对您有所帮助github.com/peterjgrainger/mongoose-sandbox。我不确定您如何处理连接或如何检查数据库或您已经拥有的数据,所以这可能是一个因素?
  • 要运行它,您需要停止运行 mongo 的任何本地副本,然后是 docker-compose up -d 然后是 node app.js
  • 您发布的代码没有任何问题,我自己在本地运行,一切都很好:) 检查了数据库中的所有内容,包括代码

标签: node.js mongodb collections


【解决方案1】:

我不确定这是在保存作业后更改作业的正确方法,但试试这个

const Job = require("../models/Job");
exports.saveJob = (req, res, next) => {
const newJob = new Job(req.body);
newJob.gender = 'Male';
newJob.save((err, myjob) => {
    myjob.code = '1234';

    Job.findOneAndUpdate({_id: myjob._id}, myjob, (err, mysavedjob) => {
        console.log(mysavedjob);
    });

})
}

【讨论】:

  • 您好,谢谢您的帮助,第二个选项会创建另一个文档吗?
  • 是的,我的错。我会编辑它。根据我的经验, save() 只能让我保存到新的。我通常会使用 findOneAndUpdate() 来提高效率。还有,你是怎么在创建工作后设置工作代码的?
  • 谢谢,但是 findOneAndUpdate 也不起作用,我删除了这部分,惊讶的是,myjob.code 被保存了,wtf?
猜你喜欢
  • 2022-01-22
  • 2020-01-19
  • 1970-01-01
  • 2016-05-07
  • 2021-06-20
  • 1970-01-01
  • 2021-04-19
  • 2015-05-21
  • 2016-02-26
相关资源
最近更新 更多