Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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
Javascript MongoDB未在node.js应用程序中更新?_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript MongoDB未在node.js应用程序中更新?

Javascript MongoDB未在node.js应用程序中更新?,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在尝试更新node.js应用程序中的数据库,但它不起作用。I console.记录参数并正确显示(即品牌、尺寸和用户电子邮件均有效且已定义)。我该怎么做 正在调用的控制器中的函数: var User = require('../models/user'); exports.addToFavs = function(req, res) { var user=req.user; var brandToFind = req.body.brand;

我正在尝试更新node.js应用程序中的数据库,但它不起作用。I console.记录参数并正确显示(即品牌、尺寸和用户电子邮件均有效且已定义)。我该怎么做

正在调用的控制器中的函数:

var User            = require('../models/user');

exports.addToFavs = function(req, res) {
    var user=req.user; 
    var brandToFind = req.body.brand;
    var size_result = req.body.size; 
    var email_user = user.local.email; 
    //res.send? local.email?
    User.update({local: {email: email_user}} , {$set: { $push: { favorite_shoes: { brand: brandToFind, size: size_result}}}} , {multi : true}, function(error) {
        if (error) console.log(error);   
        console.log('Added %s with size=%s', brandToFind, size_result);
        console.log(User.find(email_user)); 
        res.redirect('/favorites');
    })
}; 
模式:

    var userSchema = mongoose.Schema({
    local            : {
        email        : String,
        password     : String,
    }, 
    favorite_shoes : [shoeSchema],
    history: [searchSchema],
});

var shoeSchema = mongoose.Schema({
    brand: String, 
    size: String, 
}); 

var searchSchema = mongoose.Schema({
    brand_original: String, 
    brand_result: String, 
    size: String,
});

你的发现中有一个突出的问题,可能还有另一个。这一点是错误的:

User.update({local: {email: email_user}}, ... 
这是错误的,因为您指定它的方式是查找具有与您所查询内容匹配的
local
的文档。换句话说,查找子文档中没有
密码的文档。你想要的是:

User.update({"local.email": email_user}, ...
该*将文档中的
email
字段与匹配值相匹配,而不管子文档中还有哪些其他字段。有关更多信息,请仔细阅读手册部分,直到您熟悉各种查询表单

第二件潜在的事情可能不是从你发布的代码中马上就能看出来的,那就是你对猫鼬的使用。这是一个陷阱,对于联合国发起的和那些仍然以关系的方式思考的人来说

您显示了您的模式定义,但除非您仅使用一个模型(仅针对
用户
),否则您尝试执行的操作将不起作用。原因是,在单一模型表单中,您的相关模式被认为适合您正在执行的更新操作

但是,如果您为
shoeSchema
searchSchema
中的每一个定义了一个模型,那么这些文档实际上将在单独的集合中创建,并且这种类型的更新将不起作用


在后一种情况下,返回到,熟悉概念,重新思考并再次实现您的逻辑。

我不使用mongoose,但是您的shoeSchema和searchSchema应该在userSchema之前,因为
favorite_shoes:[shoeSchema]
非常
favorite_shoes:[未定义]
我这样做了,它仍然不起作用。