mongoose:“投入embedded失败的价值在path。 不能使用'in'运算符search'_id'

我尝试在一个对象数组中保存一个数组时遇到了一些麻烦。

我收到服务器的以下响应:

{ [CastError: Cast to embedded failed for value "\'maxbeds: 4\'" at path "saved_searches"] message: 'Cast to embedded failed for value "\\\'maxbeds: 4\\\'" at path "saved_searches"', name: 'CastError', kind: 'embedded', value: '\'maxbeds: 4\'', path: 'saved_searches', reason: [TypeError: Cannot use 'in' operator to search for '_id' in maxbeds: 4] } 

这是我的模式:

 var mongoose = require('mongoose'), rfr = require('rfr'), passwordHelper = rfr('server/helpers/password.js'), Schema = mongoose.Schema, _ = require('lodash'); /* * * Creating UserSchema for MongoDB * */ var UserSchema = new Schema({ email: { type: String, required: true, unique: true }, password: { type: String, required: true, select: false }, name: { type: String, required: true }, passwordSalt: { type: String, required: true, select: false }, saved_houses: [{ mlsId: { type: String }, addressFull: { type: String }, bedrooms: { type: Number }, listPrice: { type: Number }, bathrooms: { type: Number }, sqft: { type: Number }, createdAt: { type: Date, default: Date.now } }], saved_searches: [{ search_name: { type: String }, filters: { type: [Schema.Types.Mixed] }, createdAt: { type: Date, default: Date.now } }], active: { type: Boolean, default: true }, createdAt: { type: Date, default: Date.now } }); // compile User model module.exports = mongoose.model('User', UserSchema); 

问题,我相信是存在于saved_searches数组内的对象内的filters数组

现在,在我的路由器中,我执行以下操作:

 var express = require('express'), savedDataRouter = express.Router(), mongoose = require('mongoose'), rfr = require('rfr'), s = rfr('server/routes/config/jwt_config.js'), User = rfr('server/models/User.js'), jwt = require('jsonwebtoken'); savedDataRouter.post('/searches', function (req, res) { if (mongoose.Types.ObjectId.isValid(req.body.userId)) { User.findByIdAndUpdate({ _id: req.body.userId }, { $push: { saved_searches: { search_name: req.body.search_name, $each: req.body.filters } }, }, { new: true }, function (err, doc) { if (err || !doc) { console.log(err); res.json({ status: 400, message: "Unable to save search." + err }); } else { return res.json(doc); } }); } else { return res.status(404).json({ message: "Unable to find user" }); } }); 

如果我logging来自客户端的请求正文,我得到以下内容:

 //console.log(req.body) { search_name: 'Sarasota', filters: [ 'minbaths: 1', 'maxbaths: 3', 'minbeds: 2', 'maxbeds: 4' ], userId: '583359409a1e0167d1a3a2b3' } 

我尝试了所有我在StackOverflow和其他在线资源中看到的东西,但都没有运气。 希望有人能指出我正确的方向,或告诉我我做错了什么。

我真的很感激任何帮助,你可以给我同行的代码。

编辑

添加模块依赖到我的UserSchema和SavedDataRouter

尝试这个

 User.findByIdAndUpdate({ _id: req.body.userId }, { $push: { saved_searches: { search_name: req.body.search_name, filters: req.body.filters } }, }, { new: true }, function (err, doc) { if (err || !doc) { console.log(err); res.json({ status: 400, message: "Unable to save search." + err }); } else { return res.json(doc); } });