我正在制作的网站有两种不同的语言,每个数据都保存在mongodb中,前缀为_nl或_en 有了网址,我需要能够设置这样的语言:
http://localhost/en/This-Is-English-Head/This-Is-English-Sub
我的代码看起来像这样:
var headPage = req.params.headPage;
var subPage = req.params.subPage;
var slug = 'name';
var slugSub = 'subPages.slug_en';
var myObject = {};
myObject[slugSub] = subPage;
myObject[slug] = headPage;
console.log(myObject);
Site.find(myObject,
function (err, pages) {
var Pages = {};
pages.forEach(function (page) {
Pages[page._id] = page;
});
console.log(Pages);
});
在console.log之后,我得到了以下内容:
{ 'subPages.slug_en': 'This-Is-English-Sub',
name: 'This-Is-English-Head' }
您是否可以看到objectname subPages.slug_en被视为对象名称的字符串。 我知道javascript不支持下划线(我猜?)但我仍在寻找修复,否则我将被迫将我的数据库中的所有下划线更改为不同的字符...
编辑:
console.log的最终结果必须是:
{ subPages.slug_en: 'This-Is-English-Sub',
name: 'This-Is-English-Head' }
保证:
{ 'subPages.slug_en': 'This-Is-English-Sub',
name: 'This-Is-English-Head' }
否则它不起作用
答案 0 :(得分:4)
您看到'subPages.slug_en'
(带字符串引号)的原因是对象键中的.
,而不是下划线。
对象键中肯定支持下划线而不引用。
使用subPages.slug_en
(不带字符串引号)会要求您拥有如下对象:
{ subPages: {slug_en: 'This-Is-English-Sub'},
name: 'This-Is-English-Head' }
您可以使用以下内容进行设置:
myObject['subPages']['slug_en'] = subPage;
或者简单地说:
myObject.subPages.slug_en = subPage;