【问题标题】:Update collection from angular js api using mongoose使用 mongoose 从 angular js api 更新集合
【发布时间】:2014-03-17 13:02:19
【问题描述】:

在我的集合架构中,我的代码如下

产品.js

var mongoose = require('mongoose');    
    var ProductSchema = new Schema({
         name : String,
         id : String,
         price : Number

    });
    mongoose.model('Product', ProductSchema);

WishList.js

var mongoose = require('mongoose');
var WishListSchema = new Schema({
    customer : String,
    products: {
        type: [{
            type: Schema.ObjectId,
            ref: 'Product'
        }]
    },
    billAmount : Number
});
WishListSchema.methods = {
addProduct: function(_product) {

        var deferred = q.defer();
        var Product= mongoose.model('Product');
        var self = this;
        var product = new Product(_product);

        product.save(function(err) {
            console.log(err);
            if (err) {
                return deferred.reject(err);
            } else {
                self.update({
                    $push: {
                        products : product
                    }
                }, function(err) {
                    if (err) {
                        return deferred.reject(err);
                    } else {
                        return deferred.resolve();
                    }
                });
            }
        });       
        return deferred.promise;
    }
};
mongoose.model('WishList', WishListSchema);

APIrouteDefintion.js

 app.post('/api/order/:orderId/addToCart',auth.requiresLogin,controller.addProduct);

当我以这种方式调用 addProduct 函数时,我会在 wishList 下更新我的产品 ID,但不会更新名称和价格。请让我知道我错在哪里。

【问题讨论】:

    标签: angularjs mongoose


    【解决方案1】:

    发生的是 Mongoose 的正常行为,添加到愿望清单的 id 是对产品文档的引用。

    如果你想返回产品的名称和价格,你必须在你的愿望清单中添加一个静态,例如:

    WishListSchema.statics.load = function(id, cb) { 这个.findOne({ _id:身份证 }).populate('product', 'name price').exec(cb); };

    但不要在参考资料附近引用我的话。但是您当前的结果是正常的,即 :only id 返回”,您想要的是“名称和价格是附加功能”。

    只是为了确保自己查看 Mongo 数据库中的文档,您会看到只存储了 id。

    例如“产品”:{ "$oid":"53110db1edf8384039ed0bb5" }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多