use*_*od2 19 mongoose mongodb node.js express
我无法将数组字符串保存到我的数据库中Mongoose.
(注意以下所有代码都是为了便于编写而简化)
所以我声明了一个人模式的变量:
var newPerson = new Person ({
tags: req.body.tags
});
Run Code Online (Sandbox Code Playgroud)
架构本身看起来像:
var personSchema = new mongoose.Schema({
tags: Array
});
Run Code Online (Sandbox Code Playgroud)
当谈到保存它只是一个简单的:
newPerson.save(function(err) {
//basic return of json
});
Run Code Online (Sandbox Code Playgroud)
因此,使用Postman我在身体中发送一个数组 - 但是每次我检查数据库时,它只显示一个整个数组的条目,即我发送它的方式:
有什么想法,我应该做什么?
Ash*_*y B 52
写下我的评论:
在mongoose中指定字符串数组的方法如下:
var personSchema = new mongoose.Schema({
tags: [{
type: String
}]
Run Code Online (Sandbox Code Playgroud)
但是,这里的问题最有可能与Postman有关,因为它将'array'作为字符串发送.您可以通过检查req.body.tags类似的类型来检查:
console.log(typeof req.body.tags)
Run Code Online (Sandbox Code Playgroud)
如果这返回一个String,请确保将Postman中的内容类型设置为JSON,如此屏幕截图所示,而不是默认的"form-data"选项.
小智 15
var personSchema = new mongoose.Schema({
tags:{
type:[String],
required: true
}
});
Run Code Online (Sandbox Code Playgroud)
{
"tags": ["css", "javascript", "mongoose", "node"]
}
Run Code Online (Sandbox Code Playgroud)
{
"tags":["css", "javascript", "mongoose", "node"]
}
Run Code Online (Sandbox Code Playgroud)
同样,您可以在猫鼬模式中创建其他类型的原始数组和文档数组,如下所示:
({
toys: [ToySchema],
buffers: [Buffer],
strings: [String],
numbers: [Number]
// ... etc
});
Run Code Online (Sandbox Code Playgroud)
Pho*_*nix 10
var schema = new Schema({
name: String,
binary: Buffer,
living: Boolean,
updated: { type: Date, default: Date.now },
age: { type: Number, min: 18, max: 65 },
mixed: Schema.Types.Mixed,
_someId: Schema.Types.ObjectId,
decimal: Schema.Types.Decimal128,
array: [],
ofString: [String],
ofNumber: [Number],
ofDates: [Date],
ofBuffer: [Buffer],
ofBoolean: [Boolean],
ofMixed: [Schema.Types.Mixed],
ofObjectId: [Schema.Types.ObjectId],
ofArrays: [[]],
ofArrayOfNumbers: [[Number]],
nested: {
stuff: { type: String, lowercase: true, trim: true }
},
map: Map,
mapOfString: {
type: Map,
of: String
}
})
// example use
var Thing = mongoose.model('Thing', schema);
var m = new Thing;
m.name = 'Statue of Liberty';
m.age = 125;
m.updated = new Date;
m.binary = Buffer.alloc(0);
m.living = false;
m.mixed = { any: { thing: 'i want' } };
m.markModified('mixed');
m._someId = new mongoose.Types.ObjectId;
m.array.push(1);
m.ofString.push("strings!");
m.ofNumber.unshift(1,2,3,4);
m.ofDates.addToSet(new Date);
m.ofBuffer.pop();
m.ofMixed = [1, [], 'three', { four: 5 }];
m.nested.stuff = 'good';
m.map = new Map([['key', 'value']]);
m.save(callback);
Run Code Online (Sandbox Code Playgroud)
尝试将架构更改为
var personSchema = new mongoose.Schema({
tags: [{type: String}]
});
Run Code Online (Sandbox Code Playgroud)
或者您可以使用混合类型
var personSchema = new mongoose.Schema({
tags: mongoose.Schema.Types.Mixed
});
Run Code Online (Sandbox Code Playgroud)
编辑
我认为问题出在分配上。使用:
person.tags.push("string to push");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36588 次 |
| 最近记录: |