gpt4 book ai didi

arrays - Mongo 模式,具有唯一值的字符串数组

转载 作者:行者123 更新时间:2023-12-03 03:02:43 26 4
gpt4 key购买 nike

我正在为 mongo 文档创建模式,除了防止非对象数组中的重复之外,我可以做所有事情。

我知道 addToSet,但我指的是 Mongo Schema。

我不想使用 $addToSet 检查更新,而是希望它成为我的架构验证的一部分。

示例如下。

let sampleSchema = {
name: { type: 'String', unique: true },
tags: [{ type: 'String', unique: true }]
}

以上代码片段可防止名称具有重复值。它允许将标签存储为字符串数组。

但是..我不能将数组限制为唯一字符串。

{ name: 'fail scenario', tags: ['bad', 'bad', 'array']}

我能够插入这条记录,这应该是一个失败的场景。

最佳答案

const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const _ = require('underscore');

let sampleSchema = new mongoose.Schema({
name: {
type: 'String',
unique: true
},
tags: [{
type: 'String'
}]
})
sampleSchema.pre('save', function (next) {
this.tags = _.uniq(this.tags);
next();
});
const Sample = mongoose.model('sample', sampleSchema, 'samples');


router.post('/sample', function (req, res, next) {
const sample = new Sample(req.body);

sample.save()
.then((sample) => {
return res.send(sample);
})
.catch(err => {
return res.status(500).send(err.message);
})
});

关于arrays - Mongo 模式,具有唯一值的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41788688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com