MongooseJS – 如何推正确的格式?

我想以这种格式创build数据:

{ "weather": { "dailysummary": [...], "created_on": "2016-10-27 11:11:11", "addedOnLastHour": false } } 

但为什么moongoose总是给我这种格式:

 { "weather": [ { "dailysummary": [...], "created_on": "2016-10-27 11:11:11", "addedOnLastHour": false } ] } 

我的代码:

 var updateQuery = {}; var weather = {}; weather.dailysummary = []; weather.created_on = '2016-10-27 11:11:11'; weather.addedOnLastHour = false; // Insert date data. updateQuery["weather"] = weather; stream.update({ $push: updateQuery }, function(err, streamID) { if (err) { // handle error } // success }); 

我做错了什么? 有任何想法吗?

我的模特:

 var mongoose = require("mongoose"); var mongoosePaginate = require('mongoose-paginate'); // Declare schema var streamSchema = new mongoose.Schema({ title: { type: String, required: true }, weather: { type: Object }, }); streamSchema.plugin(mongoosePaginate); // Export schema // Model.paginate() mongoose.model("Stream", streamSchema); 

       

网上收集的解决方案 "MongooseJS – 如何推正确的格式?"

您可以使用$ set操作符而不是$ push

尝试这个:

 stream.update({ $set: updateQuery }, function(err, streamID) { if (err) { // handle error } // success }); 

推$似乎是问题的制造者。 它用于将对象推送到数组数据types属性。 因此,你正在得到一个arrays的天气。 以下是mongoose更新的示例代码片段。

 Contact.update({_id: contact.id}, weatherObject, {}, function() {}); 

这里:

联系 – >型号

Where子句 – > {_id:contact.id}

weatherObject – >更新数据