现在,我正在为一个项目工作,该项目需要使用NodeJS和MongoDB保留一些有关分析的信息。
当我尝试发送JSon数据时,某些部分会保存到数据库中,但大部分数据都会丢失。我无法理解我在做错的地方。我对这些技术没有足够的背景知识。
这是我的Mongoose.model;
<!-- Table -->
<table class="displayStatsTable" border="1">
<tbody class="displayStatsTableBody">
<tr class="displayStatsTableTopRow">
<th><c:out value="Forename" /></th>
<th><c:out value="Surname" /></th>
<th><c:out value="Average Score" /></th>
</tr>
<c:forEach var="stats" items="${stats}">
<tr class="displayStatsTableDataRows">
<td class="displayStatsTableData">${stats.forename}</td>
<td class="displayStatsTableData">${stats.surname}</td>
<td class="displayStatsTableData">${stats.score_avg}</td>
</tr>
</c:forEach>
</tbody>
</table>
这是我的创建功能;
module.exports = mongoose.model('Products', new Schema({
unique: Number,
total: Number,
hits: {
String: {
unique: Number,
total: Number,
users:[String]
}
}
}));
这是我尝试发布的内容;
var mongoose = require('mongoose'),
Product = require('../models/products.models')
/**
* Create a Product
*/
exports.create = function(req, res) {
var product = new Product(req.body);
product.save(function(err) {
if (err)
return res.status(400);
else
res.status(201).json(product);
});
};
答案 0 :(得分:0)
使用mongoose类型Mixed
new Schema({
unique: Number,
total: Number,
hits: {}
}
混合“任何事情都有”SchemaType,其灵活性来自于难以维护的权衡。 混合可通过Schema.Types.Mixed或通过传递空对象文字来获得。以下是等效的:
var Person = new Schema({ any: {} });
var Person = new Schema({ any: Schema.Types.Mixed });
由于它是无模式类型,您可以将值更改为您喜欢的任何其他值,但Mongoose无法自动检测/保存这些更改。
要“告诉”Mongoose混合类型的值已更改,请调用文档的.markModified(path)方法,将路径传递给刚刚更改的混合类型。
person.anything = { x: [3, 4, { y: "changed" }] };
person.markModified('anything');
person.save(); // anything will now get saved
===============
“猫鼬”:“^ 4.0.3”,
mongodb版本v2.6.6
var Product = mongoose.model('Products', new mongoose.Schema({
unique: Number,
total: Number,
hits: {}
}));
var product = new Product({
"unique" : 50,
"total" : 150,
"hits" : {
"11-06-2015" : {
"unique" : 50,
"total" : 60,
"users" : [
"kris",
"mark",
"jom",
"alpi"
]
},
"12-06-2015" : {
"unique" : 50,
"total" : 90,
"users" : [
"kris",
"mark",
"jom"
]
}
}
});
product.save(function(err,p){
console.log(err,p);
Product.find(function(err,p){
console.log(err,p)
})
})
它适用于我。
由于猫鼬抛出错误[MongoError: key 12.06.2015 must not contain '.']
,我将12.06.2015
更改为12-06-2015