Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 猫鼬罐头';t将新obejct推送到父阵列_Node.js_Mongodb_Express_Asynchronous_Mongoose - Fatal编程技术网

Node.js 猫鼬罐头';t将新obejct推送到父阵列

Node.js 猫鼬罐头';t将新obejct推送到父阵列,node.js,mongodb,express,asynchronous,mongoose,Node.js,Mongodb,Express,Asynchronous,Mongoose,我有以下猫鼬模型: Place.js const mongoose = require("mongoose") const Schema = mongoose.Schema const placeSchema = new Schema({ title: { type: String, require: true }, filename: { type: String, require: true }, lociSets: [{ type: Schema.Types.Ob

我有以下猫鼬模型:

Place.js

const mongoose = require("mongoose")
const Schema = mongoose.Schema

const placeSchema = new Schema({
    title: { type: String, require: true },
    filename: { type: String, require: true },
    lociSets: [{ type: Schema.Types.ObjectId, ref: 'LociSet'}]
})

module.exports = mongoose.model("places", placeSchema)
const mongoose = require("mongoose")
const Schema = mongoose.Schema
const LociSchema = require('./Locus')

const lociSetSchema = new Schema({
    title: { type: String, require: true },
    creator: { type: Schema.Types.ObjectId, ref: 'User' },
    public: { type: Boolean, default: true },
    loci: [LociSchema]
})
module.exports = mongoose.model("lociSets", lociSetSchema)
const mongoose = require("mongoose")
const Schema = mongoose.Schema

const locusSchema = new Schema({
    position: {
        x: { type: Number, require: true },
        y: { type: Number, require: true },
        z: { type: Number, require: true }
    }
})

module.exports = locusSchema
LociSet.js

const mongoose = require("mongoose")
const Schema = mongoose.Schema

const placeSchema = new Schema({
    title: { type: String, require: true },
    filename: { type: String, require: true },
    lociSets: [{ type: Schema.Types.ObjectId, ref: 'LociSet'}]
})

module.exports = mongoose.model("places", placeSchema)
const mongoose = require("mongoose")
const Schema = mongoose.Schema
const LociSchema = require('./Locus')

const lociSetSchema = new Schema({
    title: { type: String, require: true },
    creator: { type: Schema.Types.ObjectId, ref: 'User' },
    public: { type: Boolean, default: true },
    loci: [LociSchema]
})
module.exports = mongoose.model("lociSets", lociSetSchema)
const mongoose = require("mongoose")
const Schema = mongoose.Schema

const locusSchema = new Schema({
    position: {
        x: { type: Number, require: true },
        y: { type: Number, require: true },
        z: { type: Number, require: true }
    }
})

module.exports = locusSchema
Locus.js

const mongoose = require("mongoose")
const Schema = mongoose.Schema

const placeSchema = new Schema({
    title: { type: String, require: true },
    filename: { type: String, require: true },
    lociSets: [{ type: Schema.Types.ObjectId, ref: 'LociSet'}]
})

module.exports = mongoose.model("places", placeSchema)
const mongoose = require("mongoose")
const Schema = mongoose.Schema
const LociSchema = require('./Locus')

const lociSetSchema = new Schema({
    title: { type: String, require: true },
    creator: { type: Schema.Types.ObjectId, ref: 'User' },
    public: { type: Boolean, default: true },
    loci: [LociSchema]
})
module.exports = mongoose.model("lociSets", lociSetSchema)
const mongoose = require("mongoose")
const Schema = mongoose.Schema

const locusSchema = new Schema({
    position: {
        x: { type: Number, require: true },
        y: { type: Number, require: true },
        z: { type: Number, require: true }
    }
})

module.exports = locusSchema

问题: 我尝试将一个新的LociSet插入Place的LociSet数组,如下所示:

exports.createOne = async (req, res) => {
    const {
        title,
        public = true,
        loci = []
    } = req.body

    console.log(title,public,loci,req.user.id)
    const lociSet = new LociSet({
        title,
        public,
        loci,
        creator: req.user.id
    })

    try {
        const place = await Place.findOne({
            "title": req.params.title.toLowerCase()
        })

        console.log(lociSet)

        await lociSet.save()
        await place.lociSets.push(lociSet)
        await place.save()
    } catch (err) {
        res.status(500).send({
            message: "Some error occurred while creating the loci set.", err
        });
    }
}
但随后我收到一条错误消息,在路径“lociSets\”


创建Locaiset模型时没有问题,但当我尝试保存place模型时,它似乎会中断,因为
Locaisets
是一个
ObjectId
引用数组,您可能需要尝试以下方法:

exports.createOne = async (req, res) => {

    const { title, public = true, loci = [] } = req.body
    const lociSet = new LociSet({
        title,
        public,
        loci,
        creator: req.user.id
    })

    try {

        const newLociSet = await lociSet.save()
        const place = await Place.findOneAndUpdate(
            { "title": req.params.title.toLowerCase() },
            { "$push": { "lociSets" : newLociSet._id } },
            { "new": true}
        )

        res.status(200).json(place)

    } catch (err) {
        res.status(500).send({
            message: "Some error occurred while creating the loci set.", err
        })
    }
}