현재 사용자 데이터를 저장해야하는 MongoDB 문서에 대해 다음 스키마가 있습니다.
var userSchema = new mongoose.Schema({
username: {type: String, unique : true},
password: {type: String},
firstname: String,
lastname: String,
sketches:
[
{name: String,
sketch: Array}
]
sketches 속성은 각 객체가 스케치 이름과 스케치 데이터를 보유하는 배열을 연결하는 배열 객체 여야합니다. 어떤 이유로 스키마는 다음과 같이 생성됩니다.
{
"__v" : 1,
"_id" : ObjectId("57c4d7693aa85cea2acf4d4d"),
"firstname" : "test",
"lastname" : "name",
"password" : "password123",
"sketches" : [
{
"sketch" : []
}
],
"username" : "testname"
}
MongoDB에서 중첩 된 개체를 만드는 데 올바른 형식이 정확히 확실하지 않지만 JSON과 동일 할 것이라고 가정했습니다. 객체 배열을 생성하기 위해 스키마를 어떻게 구성해야합니까?
PUT 요청에서 문서에 삽입 할 웹 서비스 :
app.route("/addSketch/:username").put(function(req, res, next) {
var user_name = req.params.username;
User.findOne({username:user_name},function(err,foundObject){
if(err){
console.log("error");
res.status(500).send();
}
else{
if(!foundObject){
res.status(404).send();
}
else{
if(req.body.strokes && req.body.sketchName){
var sketchObj = [];
sketchObj[req.body.sketchName] = req.body.strokes;
foundObject.sketches.push(req.body.sketchData);
}
foundObject.save(function(err,updatedObject){
if(err){
console.log(err);
res.status(500).send();
}
else{
res.send(updatedObject);
}
});
}
}
});
console.log('saving on server');
var form = formidable.IncomingForm();
console.log(form);
console.log('the type of the request received is', (typeof req));
form.parse(req, function(err, fields, files) {
res.writeHead(200, {"content-type": "text/plain"});
res.write('received upload:\n\n');
var name = fields.name;
var newSketch = new SavedSketch();
newSketch.name = name;
newSketch.sketchData = fields.value;
newSketch.save(function(err,savedObject){
if(err){
console.log(err);
res.status(500).json({status:'failure'})
}
else{
console.log("ID: " + fields.value.id + " strokeData:" + fields.value.strokes);
res.json({status: 'success'});
}
});
res.end();
});
});
개요
var userSchema = new mongoose.Schema({
username: {type: String, unique : true},
password: {type: String},
firstname:{type: String},
lastname: {type: String},
sketches: [
{
name: String,
sketch : {type : Array}
}
]
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다