猫鼬在更新模型时设置了空数组

时间:2020-10-28 22:35:34

标签: node.js mongodb express mongoose

我的猫鼬有问题。我使用MEAN堆栈。

我有一个包含一些字段的房屋模式。当我更新房子(使用save方法)时,猫鼬会更新所有字段,但将嵌套对象中的数组设置为空。为什么?

HOUSE SCHEMA

const mongoose = require('mongoose');
const posSchema = require('./pos');
const reviewSchema = require('./reviews');
const roomSchema = require('./rooms');
const contactSchema = require('./contacts');
const nearSchema = require('./nears');

const houseSchema = new mongoose.Schema({

    title: { type: String, required: true },

    description: { type: String, required: true },

    shared: {
       description: { type: String, required: true },
       photos: { type: [String], required: true }
     },

    // OTHER FIELDS

}, { timestamps: true });

mongoose.model('House', houseSchema);

更新功能

House.findById(body.house._id, "-__v", async (err, house) => {

    if (err) { return res.status(400).json(err); }
    else if (!house) { return res.status(400); }

    house.title = body.house.title;
    house.totalSize = parseInt(body.house.totalSize.toString());
    house.bathrooms = parseInt(body.house.bathrooms.toString());
    house.totalBeds = parseInt(body.house.totalBeds.toString());
    house.description = body.house.description;
    house.totalFreeBeds = parseInt(body.house.totalFreeBeds.toString());
    house.minPrice = parseFloat(body.house.minPrice.toString()).toFixed(2);
    house.type = body.house.type;
    house.level = body.house.level;
    house.top_floor = body.house.top_floor;

    house.rooms = body.house.rooms;

    house.checkboxes = body.house.checkboxes;
    house.contacts = body.house.contacts;
    house.pos = body.house.pos;

    house.save(err => {
        if (err) { console.log(err); return res.status(400).json(err); }
        return res.status(200).json({ status: 200, remove: remove });
    });
        
});

在更新house.shared.photos之前为[“ foo”,“ bar”]

之后是[]。

为什么?

1 个答案:

答案 0 :(得分:0)

您没有在任何地方设置 house.shared

尝试在house.shared = body.house.shared通话之前添加save